home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / DATATURE / WAMPUM42.LZH / WAMPDOC.EXE / lha / WAMPUM / WAMPUM.DOC < prev   
Text File  |  1990-08-21  |  278KB  |  5,614 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                     
  13.                               
  14.                                
  15.                                      WAMPUM  tm
  16.                  
  17.  
  18.                            A dBASE-Compatible, Menu-Driven
  19.  
  20.                              Data Base Management System
  21.  
  22.              
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.            NOTE: Print the README.DOC file for late-breaking enhancements!
  37.                  It includes ALL new feature documentation for version 4.
  38.  
  39.                  If you already are familiar with version 3.3 of WAMPUM,
  40.                  then you should first read the README.DOC file. 
  41.  
  42.                  If you are new to WAMPUM, then read this documentation    
  43.                  before reading the README.DOC file.
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.                         Copyright (c) Ward Mundy, 1985-1990.
  57.  
  58.                Ward Mundy Software, 4160 Club Drive, Atlanta, GA 30319
  59.                    
  60.                         Second Edition.  All Rights Reserved.
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.         1  Overview  . . . . . . . . . . . . . . . . . . . . . . . . .    1
  68.            1.1  What is WAMPUM Anyway? . . . . . . . . . . . . . . . .    1
  69.            1.2  Summary of Features  . . . . . . . . . . . . . . . . .    1
  70.            1.4  System Requirements  . . . . . . . . . . . . . . . . .    2
  71.            1.5  Getting Started  . . . . . . . . . . . . . . . . . . .    3
  72.                1.5.1  Loading the Program  . . . . . . . . . . . . . .    3
  73.                    1.5.1.1  Installing the Software  . . . . . . . . .    3
  74.                    1.5.1.2  How to Run It  . . . . . . . . . . . . . .    4
  75.                1.5.2  Maneuvering on the Main Menu . . . . . . . . . .    5
  76.            1.6  Quitting WAMPUM  . . . . . . . . . . . . . . . . . . .    5
  77.            1.7  Using the Cursor & Function Keys . . . . . . . . . . .    5
  78.  
  79.         2  Developer Functions . . . . . . . . . . . . . . . . . . . .    7
  80.            2.1 Creating A New Application  . . . . . . . . . . . . . .    7
  81.                2.1.1 Overview of Application Development Strategy  . .    7
  82.                2.1.2 Create A New SubDirectory . . . . . . . . . . . .    9
  83.                2.1.3 Building a New File . . . . . . . . . . . . . . .   10
  84.                2.1.4 Selecting the New File  . . . . . . . . . . . . .   12
  85.                2.1.5 Revising the Existing File Structure  . . . . . .   12
  86.                2.1.6 Indexing the New File . . . . . . . . . . . . . .   13
  87.                    2.1.6.1  Overview . . . . . . . . . . . . . . . . .   13
  88.                    2.1.6.2  Creating New Indexes . . . . . . . . . . .   14
  89.                    2.1.6.3  Selecting Indexes  . . . . . . . . . . . .   15
  90.                2.1.7 Printer Configuration (.MEM files)  . . . . . . .   15
  91.                    2.1.7.1  Overview . . . . . . . . . . . . . . . . .   15
  92.                    2.1.7.2  Selecting an Existing Printer Table  . . .   17
  93.                    2.1.7.3  Creating a New Printer Table . . . . . . .   17
  94.                2.1.8 Relating a Secondary File . . . . . . . . . . . .   18
  95.                2.1.9 Storing A New Configuration (Wampum.Mem)  . . . .   19
  96.                2.1.10  Building Reports, Labels, and Form Letters  . .   22
  97.                    2.1.10.1  REPORTS . . . . . . . . . . . . . . . . .   22
  98.                    2.1.10.2  LABELS  . . . . . . . . . . . . . . . . .   29
  99.                    2.1.10.3  FORM LETTERS  . . . . . . . . . . . . . .   32
  100.                2.1.11  Building Function Key Macros (KEYS.DBF)   . . .   39
  101.                2.1.12  Building Edit Checks (EDIT.DBF) . . . . . . . .   41
  102.                2.1.13  Building Data Entry Menus (MENUS.DBF)   . . . .   47
  103.                2.1.14  Building an Audit Trail File (AUDIT.DBF)  . . .   53
  104.                2.1.15  Preformatted Output (WAMPUM.DBF)  . . . . . . .   54
  105.                    2.1.15.1  Overview  . . . . . . . . . . . . . . . .   54
  106.                    2.1.15.2  Building the WAMPUM.DBF File  . . . . . .   54
  107.                    2.1.15.3  Adding To/Editing the WAMPUM File . . . .   55
  108.                2.1.16  Resetting the Developer Password  . . . . . . .   56
  109.                2.1.17  Network Considerations  . . . . . . . . . . . .   56
  110.                2.1.18  Making a Backup of the User Application   . . .   57
  111.                2.1.19  Writing the Documentation . . . . . . . . . . .   57
  112.            2.2 ! - RUNning an External Program . . . . . . . . . . . .   58
  113.            2.3 & - Run FoxBASE+ Commands/Programs  . . . . . . . . . .   58
  114.            2.4 Z - ZOOMing or RELATing a Supplemental File   . . . . .   58
  115.            2.5 G - Global Replacement of Data  . . . . . . . . . . . .   60
  116.            2.6 C - Copy Utilities for Importing & Exporting Data   . .   61
  117.            2.7 Deleting & Undeleting Groups of Records   . . . . . . .   64
  118.  
  119.                                           i
  120.  
  121.  
  122.  
  123.  
  124.  
  125.            2.8 Reserved Variables, FoxBASE & Clipper Functions . . . .   65
  126.                2.8.1  Overview . . . . . . . . . . . . . . . . . . . .   65
  127.                2.8.2  CHARACTER/STRING functions . . . . . . . . . . .   64
  128.                2.8.3  DATE functions . . . . . . . . . . . . . . . . .   66
  129.                2.8.4  DUPKEY("FIELDNAME")  . . . . . . . . . . . . . .   67
  130.                2.8.5  EMPTY(fieldname) tests for empty fields  . . . .   68
  131.                2.8.6  LASTTIME field in data bases . . . . . . . . . .   68
  132.                2.8.7  LASTUPDT field in data bases . . . . . . . . . .   68
  133.                2.8.8  LASTUSER field in data bases . . . . . . . . . .   68
  134.            2.9 PATH Considerations   . . . . . . . . . . . . . . . . .   69
  135.            2.10 Enabling USERID's and Passwords  . . . . . . . . . . .   69
  136.            2.11  WAMPUM & DOS System Errors  . . . . . . . . . . . . .   70
  137.  
  138.         3  End-User Functions  . . . . . . . . . . . . . . . . . . . .   72
  139.            3.1 Overview  . . . . . . . . . . . . . . . . . . . . . . .   72
  140.            3.2 A - ADDing New Records  . . . . . . . . . . . . . . . .   73
  141.            3.3 E - EDITing Records . . . . . . . . . . . . . . . . . .   74
  142.            3.4 D - DISPLAYing Records  . . . . . . . . . . . . . . . .   76
  143.            3.5 M - MARKing a Record for Deletion . . . . . . . . . . .   77
  144.            3.6 U - UNDELETing a Record . . . . . . . . . . . . . . . .   79
  145.            3.7 P - PRINTing Records  . . . . . . . . . . . . . . . . .   80
  146.            3.8 X - REBUILD/FileFix . . . . . . . . . . . . . . . . . .   81
  147.            3.9 S - SELECT Utilities  . . . . . . . . . . . . . . . . .   83
  148.                3.9.1  Overview . . . . . . . . . . . . . . . . . . . .   83
  149.                3.9.2  Record Selection Criteria  . . . . . . . . . . .   83
  150.                3.9.3  Listing File Contents  . . . . . . . . . . . . .   89
  151.                3.9.4  Changing Current Data Entry Menu . . . . . . . .   90
  152.                3.9.5  Picking the Lead Index . . . . . . . . . . . . .   90
  153.                3.9.6  Setting Browse Mode ON . . . . . . . . . . . . .   91
  154.                3.9.7  Listing the File Structure . . . . . . . . . . .   92
  155.            3.10  R - REPORTS Generation  . . . . . . . . . . . . . . .   92
  156.            3.11  L - LABELS Production . . . . . . . . . . . . . . . .   93
  157.            3.12  T - FORM LETTER Generation  . . . . . . . . . . . . .   93
  158.            3.13  W - WAMPUM Preformatted Output  . . . . . . . . . . .   94
  159.            3.14  Printer Selection Screen  . . . . . . . . . . . . . .   95
  160.                3.14.1  Printed Output  . . . . . . . . . . . . . . . .   95
  161.                3.14.2  Printer Font Selection  . . . . . . . . . . . .   95
  162.                3.14.3  Output All Records  . . . . . . . . . . . . . .   95
  163.                3.14.4  Output Records Marked for Deletion      . . . .   95
  164.            3.15  On-Line HELP  . . . . . . . . . . . . . . . . . . . .   96
  165.            3.16  Credits . . . . . . . . . . . . . . . . . . . . . . .   96
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.                                          ii
  179.  
  180.  
  181.  
  182.  
  183.  
  184.           Ward Mundy Software - Product Offerings
  185.  
  186.             We have developed a number of reasonably-priced, ShareWare
  187.           products which we think you will find are comparable to
  188.           commercial products except in one respect: price.  A brief
  189.           summary of these offerings follows.  See the README.DOC file for
  190.           late-breaking developments!
  191.  
  192.             WAMPUM is a menu-driven, pop-up (TSR), dBASE-compatible data
  193.           base management system.  It permits even novices to develop
  194.           powerful applications in minutes instead of months.  Virtually
  195.           every dBASE command and function is supported using easy-to-use
  196.           menus.  Versions are available for stand-alone PCs or NetBIOS-
  197.           compatible networks.  In addition, users may choose between
  198.           Clipper, dBASE III+, and FoxBASE+ compatible indexes.  The
  199.           FoxBASE version also supports a simulated dot prompt which
  200.           permits a user to enter virtually any dBASE command.  Simple
  201.           programs up to 500 lines also can be written and executed using
  202.           the FoxBASE version.  Requirements: 512K PC, DOS 2.X or higher,
  203.           dual floppies or hard disk.  Network version requires 640K plus
  204.           DOS 3.1 or higher.  See README.DOC for current features list.
  205.  
  206.             dLITE is a pop-up desktop file manager which permits a user to
  207.           access up to 10 different dBASE-compatible data base appli-
  208.           cations from within almost any text-based application.  In
  209.           addition to powerful file management functions, it also includes
  210.           a unique PASTE function permitting users to extract data from any
  211.           data base and stuff it into a word processing document,
  212.           spreadsheet, or any other foreground application.  Requirements: 
  213.           160K or 100K with 3.2 or 4.0 EMS memory, DOS 2.1 or higher, and
  214.           dual floppies or hard disk.
  215.  
  216.             MenuMaker is a data entry screen generator for use with WAMPUM
  217.           or dLITE. The developer draws the data entry screen as it should
  218.           appear to end users.  Then MenuMaker writes the necessary code to
  219.           support either WAMPUM or dLITE applications.
  220.  
  221.             WAMPUM Form Letter Editor provides an easy-to-use editor for
  222.           use in developing form letter applications with FoxBASE versions.
  223.  
  224.             Badge-O-Magic is a name tag and badge generation program which
  225.           uses dBASE III-compatible data bases to produce printshop quality
  226.           nametags on any HP LaserJet II-compatible laser printer.  The
  227.           software includes documentation on disk and five soft fonts with
  228.           point sizes ranging from 15 to 40 points.
  229.  
  230.             An order form to simplify ordering and registering our software
  231.           is included on the next page.  Please feel free to make as many
  232.           copies as you need.
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.             1  Overview
  241.                     
  242.             1.1  What is WAMPUM Anyway?
  243.                           
  244.                Ward's Automated Menu Package Using Microcomputers
  245.           (WAMPUM) is a full-featured, menu-driven implementation of
  246.           the dBASE III programming language. WAMPUM can wear two hats:
  247.           it is both an application development tool and an end-user
  248.           data base management system.  The software is a copyrighted
  249.           work owned by Ward Mundy which is licensed for use under
  250.           certain terms and conditions which are displayed when you run
  251.           or terminate the running of the program.  The ShareWare
  252.           versions may be used for up to 90 days to determine whether
  253.           the software meets your data base needs. Then you may either
  254.           pay the applicable license fee or discontinue using the
  255.           program.  The ShareWare version only may be redistributed so
  256.           long as it is distributed with all the files exactly as
  257.           received.  If you purchased WAMPUM from a ShareWare
  258.           distributor, the copying fee may not exceed $10 U.S.  If this
  259.           was not the case or if you received a damaged version of the
  260.           software, please do yourself and your friends a favor.  Let
  261.           us know about it, and don't use the damaged version!  
  262.             
  263.                Special thanks to Nantucket, Inc., the developer of
  264.           Clipper, the premier dBASE III compiler.  Without Clipper,
  265.           there would be no WAMPUM.  Clipper's flexibility and many
  266.           enhancements over Ashton-Tate's dBASE interpreters made
  267.           development of WAMPUM a true labor of love.  We also express
  268.           our sincere appreciation to Nantucket for authorizing the
  269.           distribution of their REPORT.EXE and LABEL.EXE programs to
  270.           end-users without additional charge.  These two programs
  271.           simulate the dBASE III commands of Create Report and Create
  272.           Label and make WAMPUM a complete stand-alone application
  273.           development system without reliance upon any dBASE
  274.           interpreter. One version of WAMPUM now relies upon the
  275.           FoxBASE+ run-time interpreter which is included with the
  276.           WAMPUM software. This version includes a report writer and
  277.           label generator without reliance upon any external program.
  278.           This version also permits the developer to write unnested,
  279.           FoxBASE-compatible programs up to 500 lines and execute them
  280.           from within WAMPUM.  We do NOT provide technical support to
  281.           those wishing to write their OWN FoxBASE-compatible programs!
  282.  
  283.             1.2  Summary of Features
  284.             
  285.                WAMPUM provides much of the functionality of the dBASE
  286.           III Plus programming language through a simple menu
  287.           interface.  Various versions of WAMPUM now support floppy-
  288.           only systems, network-based systems, and all existing dBASE
  289.           index dialects: Clipper, dBASE III Plus, and FoxBASE+.  dBASE
  290.           IV index support will be available by mid-1989.  The major
  291.           features included in WAMPUM are outlined below. 
  292.  
  293.                                           1
  294.  
  295.  
  296.           *  Creation and use of dBASE III Plus-compatible data bases
  297.           *  Multi-user network support using any dBASE III file
  298.           *  Field types include: Char, Numeric, Date, Logical, Memo
  299.           *  Creation and use of up to 7 B-Tree Indexes per .DBF file
  300.           *  Add, Edit, Delete, & Undelete Records in any .DBF file    
  301.           *  Display, List and Print Records from any .DBF file
  302.           *  10 Data Entry Screen Formats tailored to any application
  303.           *  Automatic, semi-automatic, and custom data entry screens
  304.           *  Create and use dBASE III-compatible reports & labels      
  305.           *  Create and use WAMPUM "mail merge" form letter files
  306.           *  Relation of second data base by key for any output
  307.           *  Full-featured copy utilities to import & export any data
  308.           *  Creation of printer templates to support up to 10 fonts   
  309.           *  Library of preformatted output forms with sort & select
  310.           *  Library of edit-checks tailored to any .DBF file system   
  311.           *  Library of macros tailored to any WAMPUM application 
  312.           *  Calculated fields using standard dBASE expressions   
  313.           *  Automated Selection Assist for complex Boolean searches   
  314.           *  Boolean search of MEMO field in versions except FoxBASE
  315.           *  Audit Trail / Transaction Logging for multi-user tasks    
  316.           *  NetBIOS-compatible record & file locking network support
  317.           *  Passwords and custom user configurations for networks
  318.           *  Global search & replace of 10 data elements in one pass 
  319.           *  Retrieval of 9 custom applications with a single keystroke
  320.           *  Date formats to accommodate international date formats
  321.           *  'Dot prompt' to run custom programs in FoxBASE version
  322.           *  Support for dBASE screen format files in FoxBASE version
  323.  
  324.              1.4  System Requirements
  325.             
  326.                WAMPUM may be used on IBM PC-compatible computers
  327.           running DOS 2.1 or higher.  For multi-user network
  328.           applications, DOS 3.1 or higher is required on every computer
  329.           as well as an IBM NetBIOS-compatible network.  For
  330.           performance reasons, an 80286 or 80386 processor and a hard
  331.           disk are desirable.  Minimum memory requirement is 420K above
  332.           and beyond the memory requirements of DOS and any memory-
  333.           resident programs in use.  Minimum memory is 420K (with DOS
  334.           3.1) to link to REPORT and LABEL programs from within WAMPUM. 
  335.           Without much in the way of memory-resident software, WAMPUM
  336.           typically needs 512K to operate satisfactorily after loading
  337.           DOS. WAMPUM will run on either a monochrome or color display.
  338.             
  339.                Because WAMPUM creates a number of work files from time
  340.           to time, and because WAMPUM typically works with numerous
  341.           files open at the same time, you will need to make sure that
  342.           when your computer is started, a file named CONFIG.SYS exists
  343.           in the root directory of the boot disk.  This file must
  344.           contain the following entries with the minimum values shown:
  345.             
  346.                          FILES=20
  347.                          BUFFERS=24
  348.  
  349.                                           2
  350.  
  351.  
  352.             1.5  Getting Started 
  353.             
  354.             1.5.1  Loading the Program
  355.  
  356.             1.5.1.1  Installing the Software
  357.             
  358.                WAMPUM is distributed on one or more diskettes in an
  359.           archived (compressed) format to conserve disk space.  Prior
  360.           to installing the software, you must create a directory on
  361.           your disk to house WAMPUM.  The directory must be the first
  362.           directory in your DOS PATH for performance reasons.  This
  363.           also will assure that WAMPUM can be run from any subdirectory
  364.           on your system.  If you are not familiar with the PATH
  365.           command, consult your DOS manual for more details.  Simply
  366.           stated, the PATH command tells DOS which directories (other
  367.           than the current one) should be searched whenever you ask the
  368.           computer to run a program.
  369.  
  370.                Exit to the DOS prompt and type PATH and press <ENTER>. 
  371.           For ease of presentation, we will discontinue repeating press
  372.           <ENTER> after each command.  Unless instructed otherwise,
  373.           type a command and press <ENTER>.  
  374.  
  375.                If DOS reports "no path," then you must create one
  376.           before installing or running WAMPUM.  First, create a new
  377.           directory (file drawer) by typing MD \WAMPUM.  Then, create a
  378.           path by typing PATH=C:\WAMPUM.  If your default drive is not
  379.           C:, then substitute the appropriate drive letter for C:
  380.           above.  
  381.  
  382.                NOTE:  The PATH command is only preserved until you turn
  383.           your computer off.  You must reenter the PATH command each
  384.           time you turn your system on before running WAMPUM unless the
  385.           PATH command is included in your AUTOEXEC.BAT startup file. 
  386.           Consult your DOS manual for additional guidance.
  387.  
  388.                If DOS reports that a path exists, then you have two
  389.           choices.  Either install WAMPUM into the first existing
  390.           directory in the DOS PATH or follow the steps above and add
  391.           C:\WAMPUM as the first directory in the DOS path.  
  392.  
  393.                WAMPUM cannot be run as distributed in its archived
  394.           form.  It first must be unarchived.  Insert the distribution
  395.           diskette in Drive A of your computer and type A:INSTALL.  You
  396.           then will be instructed how to proceed.
  397.  
  398.                For the Clipper and dBASE-compatible index versions,
  399.           WAMPUM.EXE, REPORT.EXE, LABEL.EXE, and printer configuration
  400.           files with a .MEM file extension will be copied into the
  401.           directory you have identified as the first directory in your
  402.           DOS PATH. Do not rename these files. 
  403.  
  404.  
  405.                                           3
  406.  
  407.  
  408.  
  409.  
  410.             1.5.1.2  How to Run It
  411.  
  412.                WAMPUM is designed to support two, very different
  413.           audiences. The first group is end-users, and the second is
  414.           application developers.  This design is implemented by
  415.           providing different menu options for the two groups. The end-
  416.           user menu options are designed to let end-users do the normal
  417.           things that are done with a database: adding, editing, and
  418.           deleting records; running reports and labels; selecting the
  419.           primary index for input and output of data; and entering
  420.           record selection criteria to narrow down which records are
  421.           produced in listings and reports.  Provision is also made to
  422.           allow end-users to rebuild a damaged data base or index
  423.           typically occasioned by a power failure.  The end-user mode
  424.           is initiated by typing WAMPUM and pressing the <ENTER> key at
  425.           the DOS prompt.  This is true for all versions.
  426.             
  427.                WAMPUM's developer mode contains all of the options
  428.           outlined above plus a number of additional options designed
  429.           to allow a person to develop a data base application for
  430.           others to use.  You do NOT have to be a programmer to become
  431.           a good WAMPUM developer!
  432.  
  433.             The developer's mode allows the creation of new data files
  434.           and indexes as well as reports, labels, and printer formats. 
  435.           It also provides access to the data files used to develop
  436.           edit checks, data entry menus, keyboard macros, preformatted
  437.           output, and form letters. Finally it allows for customization
  438.           of applications through the storing of a configuration
  439.           identifying the files, indexes, printer, and name of each
  440.           application. The developer mode is initiated by typing WAMPUM
  441.           VOODOO at the DOS prompt.  
  442.  
  443.                If you are using WAMPUM on a compatible such as an older
  444.           COMPAQ which makes DOS think it has a color card even when
  445.           using a monochrome display, then you may want to force WAMPUM
  446.           into monochrome mode by starting it with WAMPUM MONO or
  447.           WAMPUM VOODOO MONO.  In the FoxBASE+ version, monochrome mode
  448.           can be specified in the * - Config Update option.
  449.             
  450.                Except in the FoxBASE+ versions, WAMPUM uses an external
  451.           Report Writer (Report.Exe) and a Label Generator (Label.Exe)
  452.           to create report and label templates. Depending upon the
  453.           amount of memory in your machine, these programs may or may
  454.           not be able to run from within the WAMPUM program itself. 
  455.           This User's Guide explains the procedure for running REPORT
  456.           and LABEL from within WAMPUM.  If you lack the necessary
  457.           memory to do this, you may run the report writer from the DOS
  458.           prompt by typing REPORT filename where filename is the name
  459.           of the report template you wish to create or edit.  You may
  460.  
  461.                                           4
  462.  
  463.  
  464.           run the label generator from the DOS prompt by typing LABEL
  465.           filename where filename is the name of the label template you
  466.           wish to create or edit.  
  467.             
  468.               1.5.2  Maneuvering on the Main Menu
  469.             
  470.                Once you have started WAMPUM by executing one of the
  471.           commands outlined above, you will see the WAMPUM logo and
  472.           then the Main System Menu.  Note that just below the menu is
  473.           a one-line sentence of HELP regarding the highlighted option. 
  474.           You move between the options with the UP and DOWN cursor
  475.           keys.  The HOME key will take you to the first option on the
  476.           menu, and the END key will move you to the last option.
  477.             
  478.                Execute a choice on the Main System Menu by pressing the
  479.           <ENTER> key when the choice desired is highlighted or simply
  480.           type the LETTER corresponding to the choice you wish to run. 
  481.           Using the first letter method, you do not have to press
  482.           <ENTER>. 
  483.  
  484.                Context-sensitive HELP on most features is accessed by
  485.           pressing the F1 function key on any screen.
  486.  
  487.             1.6  Quitting WAMPUM
  488.             
  489.                The <ESC> key is pressed to exit from WAMPUM to DOS from
  490.           the Main System Menu.  Then answer the prompt.
  491.  
  492.             1.7  Using the Cursor & Function Keys
  493.             
  494.                A number of keys have special functions within the
  495.           WAMPUM system.  Oftentimes, these keys are not the same as
  496.           what you may have used in previous dBASE applications. Please
  497.           scan through the summaries below before you attempt to either
  498.           use or build a WAMPUM application.  Throughout this manual,
  499.           you will see references to multiple key combinations such as
  500.           CTRL-W or ALT-F10.  Whenever you see a hyphenated key
  501.           combination such as these, it means hold down the first key,
  502.           then tap the second key, then release both keys.  
  503.  
  504.                For example, CTRL-W means hold down the CTRL key, then
  505.           tap the W key (case does not matter), then release both keys. 
  506.           We use the word "TAP" advisedly.  Most PC's have a "keyboard
  507.           buffer" which remembers keystrokes which may not yet have
  508.           been displayed.  Every key on the PC acts like a repeating
  509.           key on a selectric typewriter. Thus, TAP means touch and
  510.           release promptly!
  511.  
  512.                <ESC> is the all-purpose key which is used to get you
  513.           out of trouble.  From ANY screen, you can always press the
  514.           ESCape key to exit without preserving what you already were
  515.  
  516.  
  517.                                           5
  518.  
  519.  
  520.           doing.  From the Main Menu, pressing <ESC> will terminate
  521.           WAMPUM and return you to the DOS prompt.
  522.  
  523.                Ctrl-W is WAMPUM's SAVE key.  Pressing CTRL-W typically
  524.           tells the computer to SAVE what is displayed on the screen
  525.           and move on to the next step.  If you are a previous dBASE
  526.           III user, then CTRL-W is equivalent to dBASE III's CTRL-End
  527.           key. In FoxBASE+ versions, CTRL-End also works.
  528.  
  529.                Ctrl-Home moves the user to the first field on a data
  530.           entry screen in all versions except FoxBASE+.
  531.             
  532.                Ctrl-End moves the user to the last field on a data
  533.           entry screen except in the FoxBASE+ versions.
  534.             
  535.                <Enter> or <Down> Cursor completes an entry in a field
  536.           and moves the user to the next field, if any, on the screen. 
  537.  
  538.                <Up> Cursor moves the user to the previous field, if
  539.           any, on the screen.
  540.             
  541.                <PgDn> signifies that data entry for this screen of data
  542.           has been completed and that the user wishes to SAVE the data
  543.           and continue.
  544.             
  545.                <PgUp> signifies that data entry for this screen of data
  546.           has been completed and that the user wishes to SAVE the data
  547.           and continue backwards through the data base (except when
  548.           ADDing new records to the data base).
  549.             
  550.                Ctrl-<Left> Cursor moves the cursor to the beginning of
  551.           the current data entry field.
  552.             
  553.                Ctrl-<Right> Cursor moves the cursor to the end of the
  554.           current data entry field.
  555.  
  556.                Ctrl-Y deletes the contents of the current field from
  557.           the cursor position to the end of the field.
  558.  
  559.                <Ins> toggles the computer between insert mode and
  560.           strike-over mode.  The word <INSERT> appears at the top of
  561.           the screen when INSERT mode is active.
  562.             
  563.                <Del> deletes the character currently under the cursor. 
  564.  
  565.                F1 function key is the all-purpose HELP key.  It
  566.           retrieves a screenload of helpful hints which are keyed to
  567.           your position in the WAMPUM system.
  568.             
  569.                F2-F10 function keys are macros tailorable by the
  570.           developer to hold any character string desired.  The same is
  571.           true for SHIFT, ALT, and CONTROL key combinations except Fox.
  572.  
  573.                                           6
  574.  
  575.  
  576.             2  Developer Functions
  577.             
  578.             2.1 Creating A New Application
  579.             
  580.             2.1.1 Overview of Application Development Strategy 
  581.  
  582.                As with any application development, the best advice in
  583.           starting a new project is turn off the computer and scratch
  584.           your head for a while to figure out what you want to do. 
  585.           What data input is needed to get the output desired? 
  586.  
  587.                Once you know what you want, then some familiarity with
  588.           WAMPUM's structure and the basics of dBASE will help.  WAMPUM
  589.           is designed to be stored in a directory from which it can be
  590.           run regardless of the active default directory on your hard
  591.           disk.
  592.  
  593.                The cardinal rule in using WAMPUM is a simple one:
  594.           separate applications must be created in separate sub-
  595.           directories which are NOT in your DOS PATH.  There are two
  596.           reasons for this. First, WAMPUM creates a number of
  597.           supporting files for each application. If you create more
  598.           than one application in a given subdirectory then these
  599.           supporting files will not be available for use in both
  600.           applications.  Second, because WAMPUM accesses files on the
  601.           disk using the same PATH command that DOS uses, if you build
  602.           an application in a directory which is part of the PATH, then
  603.           WAMPUM's supporting files may unintentionally spill over into
  604.           other WAMPUM applications as you begin building them.
  605.  
  606.                  Each WAMPUM application typically will include a main
  607.           file, perhaps a related file, several indexes, and numerous
  608.           reports, labels, and forms.  In addition, each time you run
  609.           WAMPUM in a new directory, it automatically builds some
  610.           supporting files for that application.  These include
  611.           EDIT.DBF (which is used to store the edit checks for a
  612.           particular application), KEYS.DBF (which is used to store any
  613.           keyboard macros for a particular application), MENUS.DBF
  614.           (which is used to store up to 9 data entry screen formats)
  615.           and, if requested, WAMPUM.DBF (which is used to build a
  616.           library of preformatted reports, labels, and form letters
  617.           which can be run without users having to master Boolean logic
  618.           and sorting rules).  Finally, WAMPUM stores a configuration
  619.           for each application in a file named WAMPUM.MEM.  For the
  620.           reasons stressed above, you should not run WAMPUM in a
  621.           directory which is part of the DOS PATH since it would create
  622.           these supplemental files.  They then would inadvertently be
  623.           accessed whenever you tried to use other applications on your
  624.           disk! 
  625.  
  626.                For those unfamiliar with dBASE and its spin-offs, a
  627.           quick thumbnail sketch of its design may help you get
  628.  
  629.                                           7
  630.  
  631.  
  632.           started.  dBASE stores data base information in sequential
  633.           files with a file extension of .DBF.  The first part of each
  634.           .DBF file defines the "structure" of the data base, i.e. the
  635.           unique names of the different pieces of information (fields)
  636.           to be stored as well as each field's type and length.  As you
  637.           add new data to the file (records), it is tacked onto the end
  638.           of the existing file.  Thus, a file consisting of three
  639.           records would, in fact, have a file structure followed by
  640.           records 1, 2, and 3 in sequential order.  
  641.  
  642.                For small data bases, sequential data bases work well;
  643.           however, it means that a search for any given record must
  644.           proceed by examining each record in the data base until the
  645.           proper record is found.  Since WAMPUM supports files with
  646.           literally millions records, the time for sequential searching
  647.           obviously would become unbearable quickly.
  648.  
  649.                dBASE indexes solve this dilemma by providing separate
  650.           files which in reality are nothing more than alphabetized
  651.           lists telling dBASE how to find a given "key" within a large
  652.           data base quickly.  The beauty of indexes is that, once
  653.           created, they are constantly updated as the information in
  654.           the main data base changes.  An index file may contain keys
  655.           for just one field in the data base (such as zip code) or it
  656.           may contain very sophisticated keys for a group of fields
  657.           based upon some developer-specified algorithm.  For example,
  658.           in indexing the names of college alumni, one might wish to
  659.           index males and unmarried females by zip code, then last
  660.           name, and then first name.  For married females, the index
  661.           should be by zip code, maiden name, and then first name. 
  662.           This would enable quick retrieval of alumni by the names
  663.           actually used while in college. 
  664.  
  665.                In data processing terms, an index performs the same
  666.           function as a sort except that an index is always sorted.  In
  667.           other words, it provides an instant sort.  And, you can have
  668.           up to seven different indexes in use with every individual
  669.           data base.  To change the sort order, all one does is change
  670.           the lead (first) index.  But, all seven indexes remain sorted
  671.           and current.  This saves an enormous amount of time when the
  672.           time comes to run a report since no intermediate sorting step
  673.           is ever required.  All one does is choose the lead index
  674.           which instantly "sorts" the report in lead index order.
  675.  
  676.                dBASE reports (.FRM files) and labels (.LBL files) are
  677.           actually formatting templates which tell the system how to
  678.           display information from a given data base.  In short, you
  679.           "pour" your data base through the template to get a formatted
  680.           report.  Unlike some data base systems, no data is actually
  681.           stored in the dBASE report.  And report or label templates do
  682.           not tell the system which records to actually print or in
  683.           what order.  A template only specifies which fields to print
  684.  
  685.                                           8
  686.  
  687.  
  688.           and what headings to put on the paper.  Choosing the order of
  689.           records to print is done by selecting the lead index. 
  690.           Picking records for a report is done using a filter which is
  691.           nothing more than record selection using Boolean logic. 
  692.           WAMPUM eases the pain of this process by providing a menu-
  693.           driven, "Plain English" assistant to guide you through the
  694.           record selection process.
  695.  
  696.                What follows in the subsequent sections of this chapter
  697.           is a step-by-step tutorial for building a sample WAMPUM
  698.           application.  Before you do anything else, do yourself a
  699.           favor and complete this tutorial.  It will take less than two
  700.           hours!
  701.  
  702.                In order to simplify the presentation, let's create a
  703.           sample application which is as generic as possible.  We will
  704.           assume that the application is based upon the data base
  705.           outlined below.  The structure of the primary file follows: 
  706.  
  707.  
  708.           FIELD NAME  TYPE        LENGTH DEC 
  709.  
  710.            LASTNAME    C            20    0
  711.            FIRSTMI     C            20    0
  712.            ADDRESS     C            40    0
  713.            CITY        C            20    0
  714.            STATE       C            2     0
  715.            ZIP         C            10    0
  716.            PURCHAMT    N            7     2
  717.            PURCHDT     D            8     0
  718.            MARRIED     L            1     0
  719.            COMMENTS    M            10    0
  720.  
  721.  
  722.             2.1.2 Create A New SubDirectory
  723.             
  724.                The first step in building a new WAMPUM application is
  725.           to create a new subdirectory on the disk to house the
  726.           information. You must be at the DOS prompt to perform these
  727.           steps.
  728.  
  729.                We recommend you name the subdirectory using a single
  730.           word of up to 8 characters in length with no embedded spaces
  731.           or punctuation.  To keep things simple, let's name it
  732.           CUSTOMER here. If you want to follow along, type the
  733.           following commands.
  734.  
  735.                       PROMPT $P$G
  736.                       MD \CUSTOMER
  737.                       CD \CUSTOMER
  738.             
  739.  
  740.  
  741.                                           9
  742.  
  743.  
  744.                The commands above (1) change the DOS prompt to assure
  745.           that you'll know the subdirectory in which you are working,
  746.           (2) make a new directory named "CUSTOMER" below the root
  747.           directory, and (3) move you to the new CUSTOMER directory. 
  748.           If you are working on the C: drive, the prompt on your screen
  749.           after issuing the above commands should be C:\CUSTOMER>. 
  750.  
  751.                You now are ready to start up WAMPUM.  Since you are
  752.           building a new application, you will want to use Developer
  753.           Mode.  This means you need to include the developer password
  754.           as shown below.  Unless you need to force WAMPUM into mono
  755.           mode, type WAMPUM VOODOO.
  756.             
  757.                If you have a Compaq or some other clone that reports a
  758.           color card when you are using a monochrome display, then
  759.           type:
  760.           WAMPUM VOODOO MONO.
  761.  
  762.                For users of the FoxBASE+ versions, type WAMPUM.
  763.  
  764.  
  765.             2.1.3 Building a New File
  766.             
  767.                The first piece of the new application to build is the
  768.           main data file.  This may contain up to 400 fields depending
  769.           upon the amount of free memory in your computer. Be aware
  770.           that you will forfeit dBASE III Plus compatibility when you
  771.           create more than 128 fields. 
  772.  
  773.                Select the B - Build New File option from the Main
  774.           System Menu by typing a B or highlight the option and press
  775.           <ENTER>. You then will be prompted to enter a file name for
  776.           your new data base file.  The file name must comply with DOS
  777.           requirements for file names, i.e. up to 8 characters, no
  778.           spaces, and preferably no punctuation. Think of a file name
  779.           that bears some relationship to the application.  It makes
  780.           things easier.  For our sample, let's use CUSTOMER.  Type in
  781.           the file name and press <ENTER>.  Note that you do NOT enter
  782.           the file extension which WAMPUM assigns as .DBF. 
  783.  
  784.                You then will be prompted to enter four pieces of
  785.           information for each new field in your data base: a field
  786.           name, a field type, a field length, and field decimals (for
  787.           numeric fields only).
  788.            
  789.                In determining the order of the fields in the data base
  790.           being created, keep in mind that BROWSE mode, which is
  791.           discussed under the Select Utilities option, displays a
  792.           single line of fields for 20 records at a time.  If your
  793.           users will be using BROWSE mode, then you should select the
  794.           most important fields in the data base as the first fields in
  795.           the file.  This will assure that they are displayed when the
  796.  
  797.                                          10
  798.  
  799.  
  800.           user sets BROWSE mode ON.  The actual number of fields which
  801.           will fit on a single line of the screen is determined by two
  802.           factors: (1) the length of the field names used, and (2) the
  803.           maximum length of the field data.  Adding the greater of
  804.           these lengths for each field plus a space between each field,
  805.           WAMPUM will display as many fields as will fit within 79
  806.           characters in BROWSE mode.  The first character position of
  807.           the line is reserved to display whether a record has been
  808.           marked DELETED.
  809.             
  810.                Field names should bear some resemblance to the piece of
  811.           data which will be stored in the field.  dBASE III supports
  812.           10 character field names, and WAMPUM can use them, too. 
  813.           However, applications are much more straight-forward if field
  814.           names are limited to 8 characters or less since this length
  815.           matches the DOS filename length restriction.  Field names
  816.           must begin with a letter of the alphabet.  Subsequent
  817.           characters in the field names may be characters, numbers, or
  818.           the underscore character.
  819.             
  820.                Field types and lengths supported by WAMPUM include: 
  821.  
  822.  
  823.           Field Type     Abbrev    Min.      Max.      Comments 
  824.                                    Len.      Len.
  825.  
  826.           Character      C         1         254       Any text string 
  827.           Numeric        N         1         15        Numeric for math
  828.           Date           D         8         8         Any date info
  829.           Logical        L         1         1         True/False info
  830.           Memo           M         10        10        Free-form WP
  831.           text 
  832.  
  833.  
  834.                Field decimals will always be 0 except for numeric
  835.           fields in which you want to use real numbers, i.e. those with
  836.           decimals.  Remember that with such fields, the TOTAL length
  837.           is the maximum number of integer positions, plus 1 for the
  838.           decimal, plus the number of decimal positions.  Thus, if the
  839.           largest value to be entered in a numeric field is 9999.99,
  840.           the field length is 7 and decimals is 2.
  841.             
  842.                Enter the information for the fields outlined in our
  843.           sample data base. After entering all of the fields, a new
  844.           blank record will appear.  Press the <ESC>ape key to indicate
  845.           that you are finished except in the FoxBASE+ versions. In the
  846.           FoxBASE+ versions, press CTRL-End.
  847.  
  848.  
  849.  
  850.  
  851.             
  852.  
  853.                                          11
  854.  
  855.  
  856.             2.1.4 Selecting the New File
  857.             
  858.                Once the data base structure has been created, you are
  859.           ready to tell WAMPUM which file you will be working with. 
  860.           From the Main System Menu select the F - File Select option
  861.           to place the file in use.
  862.  
  863.                In all versions of WAMPUM, a window displaying all files
  864.           in the default directory will appear.  Highlight the file
  865.           desired using the cursor keys, and press <ENTER>.
  866.  
  867.                The bottom of the Main System Menu now should show the
  868.           file in use with a notation: FILE: CUSTOMER.
  869.             
  870.             
  871.             2.1.5 Revising the Existing File Structure 
  872.  
  873.                Beginning with version 3.1, WAMPUM provides a simple
  874.           facility to revise the structure of an existing data base.
  875.           This often becomes necessary when you design an initial data
  876.           base without spending some time thinking about what you need.
  877.             
  878.                To revise the structure of an existing data base, you
  879.           first must select that file for use with the F - File Select
  880.           option. Once the file is in use, select the B - Build New
  881.           File.  The prompt will advise you to insert an asterisk (*)
  882.           for the file name if you desire to revise the existing data
  883.           base structure. Type an asterisk and press <ENTER>.  WAMPUM
  884.           will ask whether you really want to revise the structure of
  885.           the data base. Type Y. 
  886.  
  887.                For all versions except FoxBASE+, WAMPUM will display up
  888.           to two columns of fields from your data base.  For each
  889.           field, you may change the field name, field type, field
  890.           length, and field decimals.  You also may delete a field from
  891.           the structure by marking the DELETE? option True.  If you
  892.           change the name or field type of an existing field, ALL DATA
  893.           which exists in that field throughout your data base will be
  894.           destroyed!  Never change a field type without also changing
  895.           the field name or an error will result.  If you need to
  896.           change a field type only, you will need to use the COPY
  897.           UTILITIES option to copy the data to an SDF file, then copy
  898.           it back into a new data base structure.  If there are more
  899.           than 40 fields in your data base structure, you can move
  900.           through them using the <PgDn> and <PgUp> keys.  Once you have
  901.           made all the changes to existing fields desired, press the
  902.           <ESC> key to proceed or CTRL-End in FoxBASE+.
  903.             
  904.                WAMPUM then will ask whether you wish to ADD new fields
  905.           to the existing data base.  If you need additional fields,
  906.           type Y and you will be prompted for a field name, type,
  907.           length, and decimals entry for each new field.  You also can
  908.  
  909.                                          12
  910.  
  911.  
  912.           use <PgUp> and <PgDn> to move through the existing fields. 
  913.           You may also press <CTRL-N> to insert a new field at any
  914.           place in the file structure.  <CTRL-U> will delete or
  915.           undelete any existing field.  Once you have added all new
  916.           fields desired, press <ESC> to proceed except Fox+. 
  917.  
  918.                Once the data base has been revised, always reindex
  919.           using the X - Rebuild/FileFix option.  If you are using edit
  920.           checks, data entry menus, or keyboard macros which were keyed
  921.           to the old file structure, make certain that these are
  922.           revised to reflect the new data base structure before adding
  923.           or editing data in the data base.  This is explained in more
  924.           detail below.
  925.  
  926.  
  927.  
  928.  
  929.  
  930.             2.1.6 Indexing the New File
  931.             
  932.             2.1.6.1  Overview
  933.             
  934.                WAMPUM indexes serve two functions in run-time appli-
  935.           cations.  First, they provide a quick means of retrieving
  936.           records for edit, display, or printing.  Typical retrieval
  937.           times even with large data bases are less than one second. 
  938.           Indexes also serve as the sorting tool for all output:
  939.           reports, labels, and form letters. 
  940.  
  941.                Thus, in building a new application, you need to take
  942.           these considerations into account.  You will need indexes to
  943.           retrieve your data quickly for updating.  And you may need
  944.           other indexes to assure that reports, labels, and form
  945.           letters are produced in the proper sorted order.
  946.             
  947.                As indicated previously, the primary advantage in using
  948.           indexes rather than a sort for output is that no physical
  949.           sorting of the data base ever takes place since the indexes
  950.           are constantly updated as new records are added and old ones
  951.           are modified.  This saves an enormous amount of time in
  952.           producing reports. 
  953.  
  954.                WAMPUM supports up to SEVEN indexes for any application.
  955.           It should be noted that while these indexes function much
  956.           like the indexes in dBASE III Plus, they are not necessarily
  957.           compatible.  dBASE III Plus, FoxBASE+, and Clipper all
  958.           provide functionally equivalent indexes; however, each vendor
  959.           thinks their product's indexing algorithm is better.  Thus,
  960.           if you are moving dBASE III Plus data bases over to use with
  961.           WAMPUM, the data base, reports, and labels are compatible,
  962.           but the indexes may need to be rebuilt unless you have
  963.  
  964.  
  965.                                          13
  966.  
  967.  
  968.           purchased WAMPUM with dBASE-compatible indexes.  In any
  969.           event, indexes can be rebuilt easily.  
  970.  
  971.                Select the I - Index Select/Create option from the Main
  972.           System Menu.  This option provides a developer with the means
  973.           to create new indexes and to use existing ones.  Both avenues
  974.           are addressed in the following sections of this Guide.   
  975.  
  976.             2.1.6.2  Creating New Indexes
  977.             
  978.                New indexes can be created in one of two ways depending
  979.           upon the type of index desired and the version of WAMPUM you
  980.           selected. WAMPUM can create an index of any character,
  981.           numeric, or date field as it exists in the data base.  In our
  982.           sample data base, let's assume we want a zip code index.  In
  983.           addition, you can create a special index made up of a com-
  984.           bination of fields in the data base using dBASE string mani-
  985.           pulation functions.  For example, in our sample data base, we
  986.           might want a single index which sorted the data base on last
  987.           name and then first name within last name.
  988.             
  989.                The simple index is a single field index. In the floppy
  990.           version of WAMPUM, choosing the I-Index Select/Create option
  991.           will display a window with several options.  Highlight the
  992.           Create New Index File option and press <ENTER>.  Then
  993.           highlight the field you want to index and press <ENTER>.
  994.  
  995.                In our example, you probably would want a simple index
  996.           on the ZIP field.  Create the index following the steps
  997.           outlined above.
  998.  
  999.                In some circumstances, a more complex index may be
  1000.           desired. If you know what you are doing (i.e. you really are
  1001.           a dBASE III programmer), you can build any type of index to
  1002.           achieve any type of sorting desired.  In floppy versions of
  1003.           WAMPUM, choose the Create New Index File option, then press
  1004.           <End> to move to the option labeled ** Special Index** and
  1005.           press <ENTER>.  
  1006.  
  1007.                In all versions, you then will be prompted to name the
  1008.           new index file and then to enter the index expression.  This
  1009.           expression can be ANY legal dBASE III string expression. 
  1010.           Note that index expressions always must equate to a fixed
  1011.           length.  Thus, if spaces are trimmed off the end of a field,
  1012.           they must be added as real spaces at the end to assure a
  1013.           fixed length index.  An example may help clear the fog.
  1014.  
  1015.  
  1016.                For example, if we wanted to index on last name then
  1017.           comma space then first name, enter FULLNAME for the name of
  1018.           the index file.  Then for the index expression, type:
  1019.  
  1020.  
  1021.                                          14
  1022.  
  1023.  
  1024.           SUBSTR(TRIM(Lastname) +", "+ FirstMi + SPACE(20),1,42)
  1025.  
  1026.                The SPACE(20) expression assures that every full name
  1027.           index entry will be at least 42 characters long regardless of
  1028.           the actual length of the trimmed LASTNAME.  SUBSTR() is a
  1029.           dBASE function which extracts a substring from a string.  Its
  1030.           syntax is SUBSTR(char_expr,starting position,string length).
  1031.           Finally, note you can only concatenate strings if each
  1032.           evaluates to a character expression.  This is satisfied if a
  1033.           field is a Character type, or if text is surrounded in
  1034.           quotes, or if a dBASE function evaluates to a character
  1035.           expression.
  1036.  
  1037.  
  1038.             2.1.6.3  Selecting Indexes
  1039.             
  1040.                Once you have built new indexes, they automatically are
  1041.           selected for use in the same order they were built.  You can
  1042.           change both the LEAD INDEX and the active indexes at any time
  1043.           by picking the I - Index select/create option.  In the
  1044.           FoxBASE+ versions of WAMPUM,  enter the number of the lead
  1045.           index or the names of desired indexes.  In other versions of
  1046.           WAMPUM, choose Select Indexes to Use or Pick Lead Index, and
  1047.           highlight your desired choices.  You also may press <ALT-I>
  1048.           from the Main System Menu to change the lead index in all
  1049.           WAMPUM versions except FoxBASE+.
  1050.  
  1051.                One caution is in order.  Remember that indexes are only
  1052.           UPDATED with ADD or EDIT if those indexes are in use at the
  1053.           time the file is changed!  You can ascertain which indexes
  1054.           are in use by looking at the INDX listing which appears below
  1055.           the Main System Menu.  If you built the indexes recommended
  1056.           in the last section, the last line of your screen should read
  1057.           as follows: 
  1058.  
  1059.                     FILE: CUSTOMER   INDX: ZIP,FULLNAME 
  1060.  
  1061.  
  1062.  
  1063.  
  1064.  
  1065.             2.1.7 Printer Configuration (.MEM files)
  1066.             
  1067.             2.1.7.1  Overview
  1068.             
  1069.                In order to create high-quality output in reports,
  1070.           labels, and form letters, you will need to configure an
  1071.           application for a specific printer.  WAMPUM is packaged with
  1072.           several printer configuration tables which already have been
  1073.           built to support a number of popular printers.  If you're a
  1074.           lucky person, your work has already been done.  If not, read
  1075.           the section on constructing a new printer table below.
  1076.  
  1077.                                          15
  1078.  
  1079.  
  1080.  
  1081.                WAMPUM is designed to allow a developer to imbed printer
  1082.           codes in reports, labels, and form letters to control the
  1083.           actual printing of text.  In addition, the end-user can
  1084.           specify the starting printer font to be used to output any
  1085.           report, label, or form letter.  Finally, WAMPUM preformatted
  1086.           output includes the option of specifying the initialization
  1087.           printer string.  
  1088.  
  1089.                What is a WAMPUM printer table?  It is a standard dBASE
  1090.           III memory variable file (.MEM file extension) with special
  1091.           codes that tell your printer to print in a certain mode.  The
  1092.           following field names are reserved by WAMPUM and should not
  1093.           be used as field names in your data bases.  These fields can
  1094.           be used in creating report forms, labels, and form letters to
  1095.           vary the type styles within those output documents.  This may
  1096.           include turning underscore on and off.
  1097.             
  1098.                FONTINIT       FONT1     FONT4     FONT7
  1099.                FONTRESET      FONT2     FONT5     FONT8
  1100.                FONT0          FONT3     FONT6     FONT9 
  1101.  
  1102.                Note that the FONTINIT string always gets sent to the
  1103.           printer before anything is printed.  The FONTRESET string
  1104.           always gets sent after anything is printed.  If these fields
  1105.           are empty, then obviously nothing gets sent.
  1106.  
  1107.                The default font for all output is FONT0.  This always
  1108.           gets sent after the FONTINIT sequence unless you specify some
  1109.           other number when the output is generated.
  1110.             
  1111.                Listed below is the definition logic used to develop the
  1112.           font codes for the HP LaserJet printers.  It is similar to
  1113.           what was used for the Epson printers, except all output is in
  1114.           portrait mode with Epson dot matrix printers.  In general
  1115.           terms, FONT9 is reserved for very small print to accommodate
  1116.           reports of 132 columns. FONT8 is reserved to accommodate
  1117.           reports from 81 to 110 columns wide. FONT7 is used with the
  1118.           lasers to get mailing labels to line up. 
  1119.  
  1120.                FONT0     10 pitch Courier, portrait mode
  1121.                FONT1     10 pitch standard, portrait mode
  1122.                FONT2     10 pitch bold, portrait mode
  1123.                FONT3     10 pitch italics, portrait mode
  1124.                FONT4     Proportional, big bold, portrait mode
  1125.                FONT5     Proportional, baby print, portrait mode
  1126.                FONT6     Standard, baby print, portrait mode
  1127.                FONT7     10 pitch with codes suitable for LABELS
  1128.                FONT8     10 pitch, standard, landscape mode
  1129.                FONT9     Standard, baby print, landscape mode 
  1130.  
  1131.  
  1132.  
  1133.                                          16
  1134.  
  1135.  
  1136.                Obviously, use of these font codes can be adjusted as
  1137.           your application demands.  There may be instances in which
  1138.           you need underscoring.  This can be accomplished using one
  1139.           font to turn on automatic underscore and another to turn it
  1140.           off if your printer supports it.
  1141.             
  1142.             
  1143.             2.1.7.2  Selecting an Existing Printer Table 
  1144.  
  1145.                To select an existing printer table for use, choose the
  1146.           option labeled # - PRINTER Config on the Main System Menu.  A
  1147.           listing of all .MEM files in the current directory will be
  1148.           displayed.  In floppy versions, enter the name of the printer
  1149.           table you wish to use without the .MEM file extension.  In
  1150.           other versions, highlight the desired font file and press
  1151.           <ENTER>.  Note that you may use a table which is stored in
  1152.           another directory so long as that directory is part of DOS's
  1153.           PATH command if you know the file's name. 
  1154.  
  1155.                Once you have selected a printer, the Main System Menu
  1156.           will reappear and the last line on the screen should now show
  1157.           the printer and FONT in use.  Assuming you selected the
  1158.           HPLASERA font, the last line of your screen should look like
  1159.           this: 
  1160.  
  1161.           File: Customer  Indx: Zip,FullName  Prt: HpLaserA/0 
  1162.  
  1163.  
  1164.  
  1165.             2.1.7.3  Creating a New Printer Table
  1166.             
  1167.                If there is no printer table already available for your
  1168.           printer, then you will need to build one.  It's easy!  First,
  1169.           select the # - PRINTER config option on the Main Menu. 
  1170.  
  1171.                In the floppy versions, when WAMPUM prompts for the name
  1172.           of the printer table to use, type an asterisk (*) and press
  1173.           <ENTER>.  In other versions, highlight the Create New File
  1174.           option and press <ENTER>.  After entering a file name for
  1175.           your new printer template, you then will get a data entry
  1176.           screen in which to type the special codes for your printer. 
  1177.           Your printer manual is necessary to find the codes.
  1178.  
  1179.  
  1180.                First, decide what you want each of the printer fonts to
  1181.           do.  You also must determine what sort of initialization
  1182.           sequence, if any, you want to send whenever anything is
  1183.           printed.  And, you will want to decide whether to reset your
  1184.           printer after the printing is completed.  Almost every
  1185.           printer has some code sequence which resets the printer to
  1186.           its default settings just as if the printer had been switched
  1187.           off and on.  This is a good idea!  It always assures that
  1188.  
  1189.                                          17
  1190.  
  1191.  
  1192.           your printer is configured in a standard way for the next
  1193.           job.  It's an equally good idea to execute this reset as part
  1194.           of the printer initialization sequence for the same reason.
  1195.             
  1196.                Most printer codes start with an <ESC>ape code which has
  1197.           the ASCII value of 27.  In a lot of printer manuals, it is
  1198.           referred to as CHR$(27) which is the way <ESC> is written in
  1199.           BASIC.  Any time you see a code written as above which cannot
  1200.           be typed using the standard typewriter keyboard, you can
  1201.           enter it in WAMPUM just as you would in LOTUS 1-2-3 or
  1202.           Symphony, i.e. \027 (a backslash followed by a three-digit
  1203.           number representing the ASCII code of the character desired:
  1204.           zero, two, seven).  For example, if your printer manual says
  1205.           that ESCAPE E or CHR$(27)+E is the escape sequence to reset
  1206.           your printer, then enter the following: \027E.      
  1207.  
  1208.                Particularly with laser printers, it may be desirable in
  1209.           some situations to force some carriage returns at the
  1210.           beginning of a job.  This is especially true to line up
  1211.           mailing labels.  To accommodate this, WAMPUM permits the
  1212.           developer to insert carriage return codes in the font setups
  1213.           using the tilde (~).  One tilde means one return.  Two tildes
  1214.           means two returns, etc.  Make certain that ALL tildes follow
  1215.           the complete escape sequence you desire to generate for each
  1216.           font code since characters following tildes are ignored. Do
  1217.           NOT use tildes in the FONTINIT, FONTRESET, FONT0, or FONT2
  1218.           codes since these have special uses in WAMPUM. 
  1219.  
  1220.                Use this process to build the printer table for your
  1221.           printer, and you're all set.  Press the <PgDn> key when you
  1222.           have entered all of the codes desired.
  1223.             
  1224.                Note that you also can edit an existing printer table by
  1225.           entering an * as if you were creating a new printer table. 
  1226.           When WAMPUM prompts for the name of the new printer table,
  1227.           simply enter the name of the old table.  When the data entry
  1228.           screen appears, you will see that codes such as \027 have
  1229.           been converted by WAMPUM into the actual ASCII character.  In
  1230.           the case of the <ESC> code, this is an arrow pointing left.
  1231.           These codes can be edited as desired.
  1232.             
  1233.                A final word of warning.  Do NOT press the <ESC> key to
  1234.           enter an escape code!  This key allows you to ABORT updating
  1235.           a printer table.  To enter an escape code as part of a
  1236.           printer string, you must type \027.
  1237.             
  1238.             2.1.8 Relating a Secondary File
  1239.  
  1240.                  For purposes of report, label, and form letter output,
  1241.           you may relate or link a secondary data base to an identical
  1242.           field in the primary data base if two conditions are met.
  1243.  
  1244.  
  1245.                                          18
  1246.  
  1247.  
  1248.                (1) The secondary data base must be in the default
  1249.           directory or in the path specified by the DOS PATH. 
  1250.  
  1251.                (2) The secondary data base must be indexed on a field
  1252.           identical in size, type, and field name with a field in the
  1253.           primary data base.  Note that the matching field in the
  1254.           primary data base need not be indexed.  
  1255.             
  1256.                Whenever a report, label, or form letter is run while a
  1257.           related file and index are set, the developer may access data
  1258.           in any of the fields of the matching related file record by
  1259.           specifying the field names with the following syntax: 
  1260.  
  1261.                          ALIAS->fieldname 
  1262.  
  1263.           where ALIAS is the name of the related file and FIELDNAME is
  1264.           the name of the field to be output from the related file.
  1265.             
  1266.                A secondary file may be related in one of two ways. The
  1267.           first is to select the Z - Zoom/Relate File option on the
  1268.           Main System Menu and enter the name of the file and index to
  1269.           be related.  This relation stays in effect until changed
  1270.           provided you save it as part of the configuration.  Once a
  1271.           file has been related successfully, the file name display on
  1272.           the last line of the Main System Menu screen should look like
  1273.           the following: 
  1274.  
  1275.                               FILE: ACCOUNTS/R
  1276.             
  1277.                Any reports, labels, or form letters produced after
  1278.           relating the secondary file may access the fields in the
  1279.           related file also. 
  1280.  
  1281.                The second method of relating a file and index is as
  1282.           part of developing the WAMPUM PreFormatted Output file.  This
  1283.           is discussed in a subsequent section of the User's Guide.  It
  1284.           provides additional flexibility since it permits the
  1285.           developer to relate different secondary files and indexes to
  1286.           different reports, labels, and form letters.  WAMPUM
  1287.           Preformatted Output does not rely upon the relation
  1288.           established using the Z - Zoom/Relate File option. 
  1289.  
  1290.             2.1.9 Storing A New Configuration (Wampum.Mem) 
  1291.  
  1292.                The configuration of a given application is stored in a
  1293.           configuration file called WAMPUM.MEM.  You can change the
  1294.           default configuration by picking the configuration option
  1295.           from the Main System Menu.  Select * - CONFIG Update.  For
  1296.           each application you build, you may store certain information
  1297.           as a configuration: 
  1298.  
  1299.  
  1300.  
  1301.                                          19
  1302.  
  1303.  
  1304.                (1)  HEADING is the name to be assigned to a given
  1305.                     application.  It appears above the Main Menu and
  1306.                     also appears at the top of reports.  Press CTRL-Y
  1307.                     to clear the default WAMPUM masthead. 
  1308.  
  1309.                (2)  MAIN FILE DRIVE, RELATED DRIVE and DEFAULT
  1310.                     DIRECTORY.  Use these if your data bases are not
  1311.                     stored in the default directory. If you will be
  1312.                     accessing multiple applications with a single
  1313.                     keystroke, make certain to specify only a DEFAULT
  1314.                     drive for every application.  This should be the
  1315.                     DRIVE:\PATH name where each application is stored.
  1316.  
  1317.                (3)  MENU #'s.  This is a listing of all menu choices  
  1318.                     available to end users.  The choices on the Main
  1319.                     System Menu are numbered 1 to 21 beginning in the
  1320.                     upper left corner, reading down, then right. Make
  1321.                     certain that at least one space precedes each
  1322.                     available menu number.  Delete numbers that
  1323.                     correspond to menu choices you wish to disable.
  1324.  
  1325.                (4)  FORM LETTER MARGINS.  Specify the default left and
  1326.                     right margins for form letters.
  1327.  
  1328.                (5)  PRINTER OUTPUT.  This may be the name of a network
  1329.                     printer device for those using networks, or it may
  1330.                     be a legal DOS file name if you wish to redirect
  1331.                     printer output to a file.
  1332.  
  1333.                (6)  AUDIT TRAIL FILE.  Marking this option True enables
  1334.                     WAMPUM's audit trail.
  1335.  
  1336.                (7)  CONFIRM FIELD ENTRIES.  Marking this option True
  1337.                     means a user must press <ENTER> to confirm each
  1338.                     field entry before the cursor will move to the next
  1339.                     field.
  1340.  
  1341.                (8)  NETWORK.  Marking this option True enables
  1342.                     automatic record locking for those who have
  1343.                     purchased network versions of WAMPUM.  Otherwise,
  1344.                     WAMPUM imposes a file lock when any data base is
  1345.                     accessed.
  1346.  
  1347.                (9)  COUNTRY.  The country code number entered
  1348.                     determines the formatting of dates with WAMPUM. The
  1349.                     following formats are supported:
  1350.  
  1351.  
  1352.                          1    American            MO/DA/YR
  1353.                          2    ANSI                YR.MO.DA
  1354.                          3    British/French      DA/MO/YR
  1355.                          4    Italian             DA-MO-YR
  1356.  
  1357.                                          20
  1358.  
  1359.  
  1360.  
  1361.                (10) MEMO WIDTH.  In FoxBASE+ versions, you may specify
  1362.                     the default MEMO field width for output in lists
  1363.                     and reports.  The default is 50.
  1364.  
  1365.                (11) UPDATE MEMORY VARIABLES.  In FoxBASE+ versions, you
  1366.                     may specify up to 9 memory variables by marking
  1367.                     this field True.  These variables can be used in
  1368.                     reports, labels, and form letters as well as in
  1369.                     edit checking routines that require a simple table
  1370.                     of values.
  1371.  
  1372.                In addition to the above, saving a WAMPUM configuration
  1373.           also saves the following information:
  1374.  
  1375.                     (1)  Name of File and Related File In Use
  1376.  
  1377.                     (2)  Name of Indexes In Use
  1378.  
  1379.                     (3)  Name of Default Printer Template
  1380.  
  1381.                     (4)  Range of Available Data Entry Menus
  1382.  
  1383.                     (5)  BROWSE Mode Default Setting (On or Off)
  1384.  
  1385.                Once an application is configured, then WAMPUM remembers
  1386.           the above settings the next time WAMPUM is run whether in
  1387.           Developer or End-User mode.  This permits a developer to
  1388.           completely customize a WAMPUM application and then turn it
  1389.           over to end-users without the end-user having to master all
  1390.           of the concepts involved in building an application from the
  1391.           ground up. 
  1392.  
  1393.                Beginning with version 3.2, WAMPUM allows nine different
  1394.           configurations to be saved using file names of WAMPUM.1
  1395.           through WAMPUM.9.  To create these files, simply copy
  1396.           WAMPUM.MEM to the new file name.  Then run WAMPUM again, save
  1397.           a new configuration, and copy it to one of the other reserved
  1398.           file names.  
  1399.  
  1400.                These nine configurations can be retrieved with one or
  1401.           two keystrokes.  Press ALT-1 through ALT-9, or press ALT-0 to
  1402.           retrieve WAMPUM.MEM defaults.  Make certain that all config
  1403.           files WAMPUM.1 through WAMPUM.9 are copied to every directory
  1404.           in which you wish to access the other configurations.
  1405.  
  1406.  
  1407.  
  1408.  
  1409.  
  1410.  
  1411.  
  1412.  
  1413.                                          21
  1414.  
  1415.  
  1416.  
  1417.             2.1.10  Building Reports, Labels, and Form Letters 
  1418.  
  1419.             2.1.10.1  REPORTS
  1420.             
  1421.             2.1.10.1.1  Overview
  1422.             
  1423.                Except for FoxBASE+ versions, WAMPUM Reports are
  1424.           designed using the Clipper REPORT Generator, which Nantucket
  1425.           generously has allowed us to distribute without charge. 
  1426.           Before you can create new report forms or revise old ones,
  1427.           you need to make sure the program REPORT.EXE is located in a
  1428.           directory supported by your DOS PATH command.  This will
  1429.           assure that WAMPUM can access the report generator whenever
  1430.           you want to design or redesign a report form.  Users of
  1431.           FoxBASE+ versions can ignore this.
  1432.  
  1433.             As indicated previously, WAMPUM requires a minimum of 420K
  1434.           memory to access the report writer from within WAMPUM with
  1435.           DOS 3.1.  If you are short on memory, you can run REPORT.EXE
  1436.           from the DOS prompt by typing REPORT filename where filename
  1437.           is the name of the report you wish to create or revise. 
  1438.           Note:  Some versions of WAMPUM later than 3.1 may provide the
  1439.           flexibility to create reports without reliance upon
  1440.           REPORT.EXE.  Consult the README.DOC file for the latest
  1441.           information.
  1442.             
  1443.                Before designing a report, you will always want to print
  1444.           out a listing of the file structure with which you will be
  1445.           working.  Pick the S - Select Utilities option and specify T
  1446.           or Y for the List File Structure option.  Then type Y when
  1447.           asked whether to print the structure listing.
  1448.             
  1449.                Both the Clipper and FoxBASE+ Report Generators are
  1450.           quite similar to dBASE III's report writer which is accessed
  1451.           in dBASE with the command CREATE REPORT filename or MODIFY
  1452.           REPORT filename.  Thus, anyone who is generally familiar with
  1453.           the dBASE III method of designing report forms will have no
  1454.           problem doing the same with WAMPUM.  
  1455.  
  1456.                A report form is a file which contains a template
  1457.           telling WAMPUM which pieces of information you want to
  1458.           extract from a data base.  Note that we said "which pieces of
  1459.           information" meaning which fields rather than which records. 
  1460.           This is an important distinction since neither WAMPUM reports
  1461.           nor dBASE reports control which records print on a report.
  1462.           That is controlled with record selection using the S- Select
  1463.           Utilities option in WAMPUM.  You might more accurately refer
  1464.           to report forms as a formatting mold through which you "pour"
  1465.           information from a data base.  
  1466.             
  1467.  
  1468.  
  1469.                                          22
  1470.  
  1471.  
  1472.                All WAMPUM reports must have a DOS-standard file name
  1473.           with no file extension.  As is true with dBASE, WAMPUM
  1474.           supplies the file extension of .FRM with reports. 
  1475.  
  1476.                The R - REPORTS Menu option on the WAMPUM Main System
  1477.           Menu provides three capabilities to the user.  
  1478.  
  1479.                (1) You can run any existing report form whether created
  1480.           with any dBASE III Plus-compatible report writer.
  1481.  
  1482.                (2) You can create new report forms using the Clipper
  1483.           Report Generator or the FoxBASE+ Report Generator.  
  1484.                (3) You can revise existing report forms using either
  1485.           Report Generator.  The reports need not have been created
  1486.           originally with any particular report writer.
  1487.  
  1488.                How to run reports is explained in the end-user section
  1489.           of this User's Guide.  The following two sections address how
  1490.           to create new report forms and revise old ones. 
  1491.  
  1492.  
  1493.             2.1.10.1.2  Creating A New Report Format
  1494.  
  1495.                After printing a listing of the file structure with
  1496.           which you will be working, the next step in creating a new
  1497.           report form is to select the R - Reports Menu option from the
  1498.           WAMPUM Main System Menu.  In all versions, highlight Create
  1499.           New Report and press <ENTER>. Then enter the name you wish to
  1500.           assign to this new report form.  Do not enter a file
  1501.           extension since WAMPUM automatically assigns .FRM as the file
  1502.           extension in keeping with the dBASE naming convention. 
  1503.           WAMPUM then will run the Report Generator assuming you have
  1504.           sufficient memory to support it.   
  1505.  
  1506.                As is true with the dBASE III report writer, WAMPUM
  1507.           Report Generators divides a report into three parts: 
  1508.             
  1509.                1.  Page Heading & Format Settings 
  1510.  
  1511.                2.  Break Level Controls
  1512.             
  1513.                3.  Report Column Contents & Headings 
  1514.  
  1515.                The Page Heading & Format Settings screen allows you to
  1516.           specify the title of your report as well as the dimensions of
  1517.           the paper on which the report will be printed or displayed. 
  1518.           You also indicate whether the report should be single or
  1519.           double-spaced and whether form feeds should be generated
  1520.           before and after a report is produced.  Unlike dBASE III,
  1521.           WAMPUM always generates a form feed at the end of a report
  1522.           whether requested or not.  This assures your printer always
  1523.           is at TOP OF FORM for the next job.  For the Page Heading,
  1524.  
  1525.                                          23
  1526.  
  1527.  
  1528.           type in whatever title you want to appear at the top of your
  1529.           report when it prints out.  Do NOT center the title since
  1530.           WAMPUM will do this for you automatically. If you want a
  1531.           multi-line heading, just type it the way it should appear at
  1532.           the top of each report page. 
  1533.  
  1534.                Once you have entered a Page Heading, press the <ENTER>
  1535.           key to move to the Format Settings fields.  There are eight
  1536.           options: 
  1537.  
  1538.                1.   Enter page width  . . . . . . 80
  1539.                2.   Enter left margin . . . . . .  8
  1540.                3.   Enter right margin  . . . . .  0
  1541.                4.   Enter no. lines per page  . . 58
  1542.                5.   Double spaced report? . . . .  N
  1543.                6.   Page eject before printing? .  Y
  1544.                7.   Page eject after printing?  .  N
  1545.                8.   Plain page  . . . . . . . . .  N
  1546.  
  1547.                Shown beside each of the above entries is the default
  1548.           value which will be used unless you change them.  The Plain
  1549.           Page option controls whether a report heading with date
  1550.           prints at the top of each page of your report.
  1551.             
  1552.                For normal printers, the default settings usually are
  1553.           fine except you may wish to narrow the left margin to about 2
  1554.           just to provide more report space for information. In
  1555.           addition, you may wish to change the page eject before
  1556.           printing option to N.  
  1557.  
  1558.                For those using a laser printer, you will need to adjust
  1559.           the settings or your reports will run off the bottom of the
  1560.           page since most lasers force a 1/2 inch margin at the top and
  1561.           bottom of a page.  With standard 10 pitch, portrait mode
  1562.           reports, the appropriate settings are 80, 2, 0, 56, and N or
  1563.           Y depending upon whether you want the report single or
  1564.           double-spaced.  If you are printing sideways (landscape mode)
  1565.           with FONT8 (10 pitch) or with FONT9  (16 pitch), then the
  1566.           settings should be as follows: 
  1567.  
  1568.                     FONT8:  105, 2, 0, 40, and N or Y 
  1569.  
  1570.                     FONT9:  140, 2, 0, 40, and N or Y 
  1571.             
  1572.                Once you have entered the Page Heading and report
  1573.           settings, press the <PgDn> key to display the second screen
  1574.           of the report generator.  This screen is used principally to
  1575.           break reports into sections based upon a change in the value
  1576.           of some key field in the data base.  For beginners, just
  1577.           press <PgDn> to skip this screen.  
  1578.             
  1579.  
  1580.  
  1581.                                          24
  1582.  
  1583.  
  1584.                For experts, you should recall that your report will not
  1585.           break properly on the field specified in Group/Subtotal on
  1586.           unless that same field is the primary index in use when the
  1587.           report is run.  Similarly, if you specify a subgroup field
  1588.           name, this must be a subfield in the primary index as well.
  1589.           An example may clear the air a little.
  1590.  
  1591.                Suppose we are producing a report of customers and we
  1592.           want the report paginated by zip code.  Since we already have
  1593.           a ZIP index, the only trick is to assure that ZIP is the lead
  1594.           index when the report is run.  To create the template, enter
  1595.           the following:
  1596.  
  1597.                Group/subtotal on: ZIP
  1598.                Summary report only? N
  1599.                Eject after subtotal? Y
  1600.                Group/subtotal heading: Zip Code:
  1601.                Subgroup/subsubtotal on 
  1602.                Subgroup heading:
  1603.             
  1604.                What happens if you forget to set the primary index to
  1605.           ZIP?  When the report is run, WAMPUM assumes you know what
  1606.           you are doing.  So, as the report sifts through your data
  1607.           base, it will do just what you told it.  Whenever, the zip
  1608.           code of customers changes, the report will issue a page break
  1609.           and print a new subheading of Zip Code: 30013 for the next
  1610.           zip code encountered.  However, since you forgot to put the
  1611.           proper index in effect, the actual records in the data base
  1612.           will not be in zip code order.  Thus, you may get a page with
  1613.           one customer from zip 98199, then a page with one from 30013,
  1614.           then another page with one from 98199, etc.  In short, you
  1615.           probably will get about a 200 page report rather than the
  1616.           five page report you expected.  As noted earlier, if you are
  1617.           a beginning report developer, skip this screen until you have
  1618.           an ample paper supply.
  1619.  
  1620.                The meat of the coconut in creating report forms is the
  1621.           Field Contents screen.  This is the screen on which you tell
  1622.           the report generator which piece of information you want
  1623.           printed on the actual report.  For example, let's assume we
  1624.           want our final report to be laid out as follows:
  1625.  
  1626.           Customer Name   Purch Amt  Purch Dt   Married     Comments 
  1627.  
  1628.                For each column of information, you must specify a
  1629.           separate Field Contents screen.  When you finish specifying
  1630.           one column of information, simply <PgDn> to get another
  1631.           screen.  This process continues until you have specified all
  1632.           of the pieces of information to be printed in the various
  1633.           columns of your report. Note that each screen asks for five
  1634.           items of information: 
  1635.  
  1636.  
  1637.                                          25
  1638.  
  1639.  
  1640.                1.  CONTENTS
  1641.                2.  # decimal places  0
  1642.                3.  Totals?  N
  1643.                4.  HEADER
  1644.                5.  WIDTH
  1645.             
  1646.                CONTENTS is asking for the data base field name of the
  1647.           field to print in the current column of the report. The
  1648.           CONTENTS field may contain any valid dBASE expression. In
  1649.           addition, you can force WAMPUM to create multi-line reports
  1650.           by specifying more than one field name for the contents
  1651.           field.  Columns of a report are built from left to right
  1652.           across the screen or page when a report is produced.  
  1653.  
  1654.                Since we want the customer's full name in the first
  1655.           column, we need to get a little fancy.  If we only wanted the
  1656.           last name in this column, you would just enter LASTNAME since
  1657.           that is a field name in the data base.  However, FULLNAME is
  1658.           not a field name in the data base.  It has to be constructed
  1659.           by joining the last and first name fields together with a
  1660.           comma and space between them.  We also want to strip the
  1661.           trailing spaces off the last names so we don't get a printout
  1662.           such as Smith      , John.  The correct syntax to extract
  1663.           full names is the following:
  1664.  
  1665.                TRIM(LASTNAME) + ", " + FIRSTMI
  1666.  
  1667.                Now press <DN> cursor key or <ENTER> to move down to the
  1668.           # decimal places field; however, the <DN> cursor is safer
  1669.           since a little Clipper anomaly sometimes assumes you're
  1670.           finished building your report when you press <ENTER>.  This
  1671.           is not true in the FoxBASE+ versions.
  1672.             
  1673.                Unless you have specified a numeric expression  for the
  1674.           CONTENTS, both the # decimal places field and the Totals?
  1675.           field should be left alone.  If you are outputting numeric
  1676.           data, then the # decimal places field allows you to specify
  1677.           how many decimal positions should be printed for this column
  1678.           of the report.  Simply enter a number and press the DOWN
  1679.           CURSOR.  Totals? allows you to specify whether you want the
  1680.           numeric expression totaled (and subtotaled) at breaks in the
  1681.           report and at the end of the report.  Note again that you
  1682.           cannot TOTAL anything except a numeric expression.  If you
  1683.           just want a COUNT of records, this is covered below
  1684.           separately.  Then, DOWN CURSOR to the HEADER field. 
  1685.  
  1686.                HEADER is asking for the column heading to display for
  1687.           this column of the report.  This is free-form text of your
  1688.           choosing.  It should convey to the reader of the report what
  1689.           the contents of this column of the report actually are.  The
  1690.           only precaution here is that the header typically should not
  1691.           be much wider in length than the maximum field width being
  1692.  
  1693.                                          26
  1694.  
  1695.  
  1696.           displayed in this column.  Otherwise, you are just wasting
  1697.           space across the report since the WIDTH must be the wider of
  1698.           the field maximum width and the header width.  In the example
  1699.           above, type Customer Name on the first header line, then
  1700.           press the DOWN CURSOR and type 42 hyphens on the next line to
  1701.           simulate an underscore.  Use the DOWN CURSOR to move down to
  1702.           the WIDTH field.
  1703.             
  1704.                WIDTH is asking for the column width of this column of
  1705.           the report.  As noted above, this width should be the greater
  1706.           of the field maximum width or the longest line of the column
  1707.           headers.  For our full name, the width would be the sum of
  1708.           the widths of the LASTNAME field + FIRSTMI field + 2 (for the
  1709.           comma and space) = 42.  Once you have entered the width
  1710.           desired, press <PgDn> or <ENTER> and a second Field Contents
  1711.           Screen will appear. 
  1712.             
  1713.                For the next column of your report, the Field Contents
  1714.           would be PURCHAMT, the Number of Decimals would be 2, the
  1715.           Totals would be Y, the Header would be Purch Amt then 9
  1716.           hyphens, and the Width would be 9.  The only gotcha here is
  1717.           making sure the total column width can hold the totals
  1718.           calculation for the entire report.  We will assume 9 will
  1719.           suffice.  When the report is run, if you get a total with all
  1720.           asterisks, simply increase the column width to accommodate
  1721.           the total.
  1722.  
  1723.                For the third column, the Field Contents would be
  1724.           PURCHDT, the Number of Decimals would be 0, the Totals would
  1725.           be N, the Header would be Purch Dt then 8 hyphens, and the
  1726.           Width would be 8.  Note that in reports you can perform
  1727.           calculations with date fields.  For example, if an invoice
  1728.           always was due 30 days after the purchase date, we could
  1729.           change the Field Contents to PURCHDT+30 and change the Header
  1730.           to INVOICE DUE.  When the report was run, the invoice due
  1731.           dates automatically would be calculated. 
  1732.  
  1733.                For the fourth column, the Field Contents would be
  1734.           MARRIED, the Number of Decimals would be 0, the Totals would
  1735.           be N, the Header would be Married then 7 hyphens, and the
  1736.           Width would be 7.  Notice that a logical field yields a
  1737.           result of .T. for true or .F. for false, 3 characters wide. 
  1738.           But, the header is wider so the column width must be adjusted
  1739.           to accommodate the wider 7 character heading.  Here you might
  1740.           prefer to print the word "Yes" or "No" rather than .T. or .F. 
  1741.           WAMPUM supports this using the immediate IF function.  The
  1742.           syntax for immediate IF is IIF(condition,true result, false
  1743.           result).  In English, the immediate IF function first
  1744.           requires a Boolean logic condition.  The second argument is
  1745.           what to do if the condition is true.  The third argument is
  1746.           what to do if the condition is false.   Thus, to test a
  1747.           logical field, the syntax is IIF(MARRIED,"Yes","No").
  1748.  
  1749.                                          27
  1750.  
  1751.  
  1752.  
  1753.                     For the fifth column, the Field Contents would be
  1754.           COMMENTS, the Number of Decimals would be 0, the Totals would
  1755.           be N, the Header would be Comments then 20 hyphens, and the
  1756.           Width would be 20.  Since COMMENTS is a memo field, the
  1757.           column width can be adjusted as required to meet your needs. 
  1758.           WAMPUM automatically will provide word wrap
  1759.           as necessary to make the COMMENTS field fit in the column
  1760.           width specified.
  1761.  
  1762.                With the Clipper Report Writer, you MUST ALWAYS move to
  1763.           a blank Field Contents screen before electing to SAVE your
  1764.           report template. If you violate this rule, you probably will
  1765.           lose the last column of your report. Press the <ESC> key to
  1766.           tell the report writer you are finished.     You will be
  1767.           asked whether you are finished.  Typing a Y saves the report
  1768.           template to disk.  Typing an N returns you to the top of the
  1769.           current Field Contents Screen.  Pressing <ESC> aborts the
  1770.           report creation process and does NOT save the report. 
  1771.  
  1772.                What happens if you want to change something before you
  1773.           have first saved the report?  With either report writer,
  1774.           simply press <PgUp> to move back through the screens you have
  1775.           already entered.  Remember, however, that with the Clipper
  1776.           Report Writer, you must <PgDn> to return to a blank Field
  1777.           Contents Screen before SAVING the report.  You probably will
  1778.           have to use the <ENTER> key to move through the last
  1779.           completed Field Contents Screen to get to a blank screen.  Be
  1780.           aware that leaving an actual blank Field Contents Screen in
  1781.           the report template will cause a run-time error when the
  1782.           report is executed. 
  1783.  
  1784.  
  1785.                Suppose you want to count the number of records output
  1786.           in the report.  This is perhaps the weakest link in both the
  1787.           dBASE report writer and all the clones.  The easiest method
  1788.           for doing this is to include a final Field Contents Screen
  1789.           with the following specifications.  For the CONTENTS, type
  1790.           the number 1.  For DECIMALS, leave it at 0.  For TOTALS, type
  1791.           Y.  For the HEADER, type TOTAL and a second row of -----. 
  1792.           For width, type 5.  This will tell WAMPUM to count the
  1793.           records as the report is produced and print a total at the
  1794.           bottom.  It will also uglify your report by producing a
  1795.           column of 1's along the right margin of your report.
  1796.             
  1797.                Suppose you want a multi-line report with a name and
  1798.           address in a single column followed by several other pieces
  1799.           of data in separate columns.  For the contents field, you may
  1800.           specify more than one field for output in the column so long
  1801.           as all the fields evaluate to character strings.  To force
  1802.           multiple lines within a column, you simply reduce the column
  1803.           width to account for the amount of data which should display
  1804.  
  1805.                                          28
  1806.  
  1807.  
  1808.           on each line plus one space. Then adjust your various lines
  1809.           of data to match the column width. A simple example may help. 
  1810.           Using our sample data base, the syntax for the Field Contents
  1811.           is SUBSTR(TRIM(LASTNAME)+", " + FIRSTMI + SPACE(20),1,41) +
  1812.           ADDRESS.  The Column Width would be set to 41.  This forces
  1813.           "word wrap" after 41 characters which will be where the full
  1814.           name ends and the address begins.  
  1815.  
  1816.                The final thing to be careful of in creating reports is
  1817.           to make sure the total field widths specified for your report
  1818.           do not exceed the PAGE WIDTH specified when you set up the
  1819.           report.  A little math in advance will solve this problem. 
  1820.           WAMPUM always leaves a single space between columns of the
  1821.           report. This is in addition to the field widths specified! 
  1822.  
  1823.             
  1824.             2.1.10.1.3  Modifying Existing Report Formats 
  1825.  
  1826.                To modify an existing report, select the R - Report Menu
  1827.           option from the Main System Menu.  Look at the listing of
  1828.           reports which displays and write down the name of the one to
  1829.           be modified.  With all versions, choose the Modify Report
  1830.           option and highlight the report you want to change. 
  1831.  
  1832.                The discussion above with respect to creating a new
  1833.           report applies as well to modifying an existing one.  As
  1834.           noted, be careful to check the defaults and make certain with
  1835.           the Clipper Report Generator that you have moved to the end
  1836.           of your existing report template and then to a BLANK CONTENTS
  1837.           field before saving the report template.
  1838.  
  1839.  
  1840.             2.1.10.1.4  Outputting MEMO fields in Reports 
  1841.  
  1842.                MEMO fields may be formatted as columns in a report just
  1843.           like a character string.  The syntax of the CONTENTS
  1844.           expression is simply the name of the MEMO field.  The field
  1845.           width may be adjusted to meet your requirements. Word wrap is
  1846.           automatic.
  1847.             
  1848.  
  1849.             2.1.10.2  LABELS
  1850.  
  1851.             2.1.10.2.1  Overview
  1852.             
  1853.                WAMPUM Label Templates are designed using either the
  1854.           Clipper LABEL Generator, which Nantucket generously has
  1855.           allowed us to distribute without charge, or the FoxBASE+
  1856.           LABEL Generator which is part of the FoxBASE+ run-time
  1857.           module.  WAMPUM requires 420K to access the Clipper label
  1858.           generator program from the Main System Menu. If you are short
  1859.           on memory, you may run the label program from the DOS prompt
  1860.  
  1861.                                          29
  1862.  
  1863.  
  1864.           using the following syntax: LABEL filename where filename is
  1865.           the name of the label template to be created or revised. 
  1866.           This does not apply with FoxBASE+.
  1867.  
  1868.                Before you can create new label templates or revise old
  1869.           ones except with FoxBASE+ versions, you need to make sure the
  1870.           program LABEL.EXE is located in a directory supported by your
  1871.           DOS PATH command. This will assure that WAMPUM can access the
  1872.           label generator whenever you want to design or redesign a
  1873.           label form.  
  1874.             
  1875.                You should also be aware that beginning with DOS 3.0, a
  1876.           DOS program named LABEL.COM is provided to rename volume
  1877.           labels.  Make certain that your DOS PATH checks the
  1878.           subdirectory containing Clipper's LABEL.EXE program before
  1879.           checking the DOS subdirectory containing LABEL.COM. 
  1880.           Otherwise, WAMPUM will execute the wrong program when you
  1881.           attempt to create or revise label forms.  Another approach is
  1882.           to rename LABEL.COM to some other file name such as
  1883.           NEWLABEL.COM.  This will avoid conflict.      
  1884.  
  1885.                Before designing labels, you will always want to print
  1886.           out a listing of the file structure with which you will be
  1887.           working.  Pick the S - Select Utilities option and specify T
  1888.           or Y for the List File Structure option.  Then type Y when
  1889.           asked whether to print the structure listing.
  1890.             
  1891.                Just as was true with reports, a label form is a file
  1892.           which contains instructions telling WAMPUM which pieces of
  1893.           information you want to extract from a data base and place on
  1894.           labels.  
  1895.  
  1896.                All WAMPUM labels must have a DOS-standard file name
  1897.           with no file extension.  As is true with dBASE, WAMPUM
  1898.           supplies a file extension of .LBL with label forms.
  1899.             
  1900.                The L - LABELS for Mail option on the WAMPUM Main System
  1901.           Menu provides three capabilities to the user.  
  1902.  
  1903.                (1) You can run any existing label form created with any
  1904.           dBASE III-compatible Label Generator.
  1905.  
  1906.                (2) You can create new label forms using either the
  1907.           Clipper or FoxBASE+ Label Generator.  
  1908.  
  1909.                (3) You can revise existing label forms using the
  1910.           Clipper or FoxBASE+ Label Generator.  
  1911.  
  1912.                How to produce mailing labels is explained in the end-
  1913.           user section of this User's Guide.  The following two
  1914.           sections address how to create new label forms and revise old
  1915.           ones. 
  1916.  
  1917.                                          30
  1918.  
  1919.  
  1920.            
  1921.             2.1.10.2.2  Creating A New Label Format
  1922.             
  1923.                After printing a listing of the file structure with
  1924.           which you will be working, the next step in creating a new
  1925.           label form is to select the L - Labels for Mail option from
  1926.           the WAMPUM Main System Menu.  In all versions, pick Create
  1927.           New Labels and press <ENTER>.  Then enter the name you wish
  1928.           to assign to this new label form.  Do not enter a file
  1929.           extension since WAMPUM automatically assigns .LBL as the
  1930.           extension in keeping with the dBASE III Plus.  
  1931.  
  1932.                WAMPUM then will run the Label Generator assuming you
  1933.           have sufficient memory to support it and (except for FoxBASE+
  1934.           versions) assuming WAMPUM can find Label.Exe in the DOS PATH
  1935.           before finding DOS's LABEL.COM program. 
  1936.                As is true with the dBASE III label writer, the WAMPUM
  1937.           divides a label form into two parts: 
  1938.  
  1939.                          1.  Label Settings
  1940.             
  1941.                          2.  Label Contents 
  1942.             
  1943.                There are six items of information which can be set to
  1944.           specify how the labels should be formatted.  These include:  
  1945.  
  1946.  
  1947.                          1.   Width of Label           35
  1948.                          2.   Height of Label           5
  1949.                          3.   Left Margin               0
  1950.                          4.   Lines Between Labels      1
  1951.                          5.   Spaces Between Labels     0
  1952.                          6.   No. of Labels Across      1 
  1953.  
  1954.                Width of Label refers to the maximum width of any text
  1955.           entry on any label produced.  Height of Label means the
  1956.           maximum number of lines per label.  Left Margin is the
  1957.           starting column position for the left-most label.  Lines
  1958.           Between Labels specifies the number of blank lines between
  1959.           each completed label. Spaces Between Labels is the number of
  1960.           blank columns horizontally between labels when two or more
  1961.           are produced across the page.  Number of Labels Across allows
  1962.           you to specify how many columns of labels will be printed
  1963.           across the page (up to 5). 
  1964.  
  1965.                The main consideration to keep in mind in producing
  1966.           labels is that there is no pagination control for labels. All
  1967.           label forms assume an unending supply of continuous-form
  1968.           label stock in your printer.  If you are using a laser
  1969.           printer, then printer codes will have to be used to set top
  1970.           of form and page length to match the label format desired
  1971.           with one exception.  WAMPUM knows the format for 33-UP LABELS
  1972.  
  1973.                                          31
  1974.  
  1975.  
  1976.           (11 labels per page with 3 across) if you use the following
  1977.           settings for the label form and specify FONT7 with the
  1978.           HPLASERA printer table: 
  1979.  
  1980.                          1.   Width of Label           24
  1981.                          2.   Height of Label           4
  1982.                          3.   Left Margin               0
  1983.                          4.   Lines Between Labels      2
  1984.                          5.   Spaces Between Labels     4
  1985.                          6.   No. of Labels Across      3 
  1986.  
  1987.                Once you have entered the label settings desired, press
  1988.           <PgDn> to move to the Label Contents Screen.  In this screen,
  1989.           you enter field names to be produced on the labels much as
  1990.           was done on the Field Contents Screen with Report Forms. 
  1991.           Then, except with FoxBASE+ versions,  press <ESC> when you
  1992.           have completed filling out the field expressions which should
  1993.           appear on each line of the label.  You will be prompted to
  1994.           answer whether to save the new label format.  
  1995.  
  1996.                A typical example of field expressions for mailing
  1997.           labels follows. All of the names in BOLD are the actual field
  1998.           names from our sample data base: 
  1999.  
  2000.                1    TRIM(FIRSTMI) + " " + TRIM(LASTNAME)
  2001.                2    ADDRESS
  2002.                3    TRIM(CITY) + ", " + TRIM(STATE) + " " + ZIP
  2003.  
  2004.             
  2005.             2.1.10.2.3  Modifying An Existing Label Format
  2006.  
  2007.                 To modify an existing label format, select the L -
  2008.           Labels for Mail option from the Main System Menu.  Look at
  2009.           the listing of labels which displays and write down the name
  2010.           of the one to be modified.  In all versions, choose Modify
  2011.           Label, then pick the label template to be modified.  The
  2012.           discussion above with respect to creating a new label applies
  2013.           as well to modifying an existing one.  You then SAVE or ABORT
  2014.           saving the revised label form just as was done in creating a
  2015.           new one above.  
  2016.  
  2017.  
  2018.             2.1.10.3  FORM LETTERS
  2019.             
  2020.             2.1.10.3.1  Overview
  2021.             
  2022.                One of the most critical limitations of dBASE III has
  2023.           been its lack of a convenient "mail merge" interface which
  2024.           would allow selected data to be extracted from a data base
  2025.           and inserted into form letters.  WAMPUM provides this link
  2026.           through its built-in Form Letter generator.
  2027.             
  2028.  
  2029.                                                       32
  2030.  
  2031.  
  2032.                In FoxBASE+ versions, a WAMPUM form letter is nothing
  2033.           more than a standard dBASE III data base with a single field
  2034.           designated as LINE1.  In other versions, the form letter file is
  2035.           a standard ASCII file which can be created using any editor or
  2036.           WAMPUM's built-in editor. 
  2037.  
  2038.                When a form letter merge is executed through either the
  2039.           T - Form Letter option or via W - Wampum Preformatted
  2040.           Output, WAMPUM simply extracts data from your data base
  2041.           and merges it with the text contained in the form letter file
  2042.           you specify.  WAMPUM automatically handles word wrapping
  2043.           as part of the merge process.  In addition, the Form Letter
  2044.           Generator includes powerful programming functions which
  2045.           allow you to test the contents of fields in a data base and
  2046.           branch to various paragraphs of the form letter depending
  2047.           upon the contents of the data base.  The default page size for
  2048.           form letters is 8-1/2 x 11 using 10 pitch type.  You may
  2049.           adjust the left and right margin settings in either the
  2050.           WAMPUM Configuration Screen or within the form itself.  You
  2051.           also may turn off form feeds at the end of each document if
  2052.           desired.
  2053.  
  2054.                Up to five related data bases can be manipulated within
  2055.           any form letter file.  You also may now rely upon indexed key
  2056.           retrieval to generate single form letters from any active data
  2057.           base.  This avoids having to make a full pass through very
  2058.           large data bases to generate only a few form letters. 
  2059.  
  2060.                The following sections describe how to create form
  2061.           letters.  The end-user section of this Guide describes the
  2062.           process of actually merging data with a form letter file. 
  2063.  
  2064.  
  2065.             2.1.10.3.2  Creating a New Form Letter File 
  2066.  
  2067.                To create a new form letter, select T - Form Letter
  2068.           Menu from the Main System Menu.  In FoxBASE+ versions,
  2069.           when prompted for the name of the form letter to run, type
  2070.           an asterisk (*) and press <PgDn>.  In other versions, choose
  2071.           Create/Edit Form.  You then will be prompted to name the
  2072.           new form letter.  In FoxBASE+ versions, this name must start
  2073.           with T- and then up to a 6 character name.  WAMPUM will
  2074.           add the .DBF file extension and build the form letter file.  In
  2075.           other versions, the ASCII file name may be any DOS file name
  2076.           up to 8 characters.  WAMPUM will add the .TXT file
  2077.           extension and run WAMPUM's built-in editor.
  2078.  
  2079.             
  2080.             2.1.10.3.3  Building Data in Form Letter Files 
  2081.  
  2082.                To actually build the form letter in FoxBASE+ versions,
  2083.           use F - File Select to select the form letter file created
  2084.  
  2085.                                                       33
  2086.  
  2087.  
  2088.           above just as you would select any other data base to use. In
  2089.           other versions, the form letter editor is activated when you
  2090.           create or edit any form letter file.
  2091.  
  2092.                Before actually entering data for the form letter, some
  2093.           explanation of how form letters are constructed and how they
  2094.           are output will assist in your design.
  2095.  
  2096.                When WAMPUM generates form letters, it reads the form
  2097.           letter file to get the text for the form letter.  In FoxBASE+
  2098.           versions, all leading and trailing spaces in each record are
  2099.           stripped off when WAMPUM builds the text to print. 
  2100.           WAMPUM then reads the next record in the form letter file
  2101.           and appends it with a single leading space to what was in the
  2102.           previous record.  For example, each field in a FoxBASE+ form
  2103.           letter record may contain up to 136 characters.  Suppose the
  2104.           following two records were in the file: 
  2105.  
  2106.                      Hello there,
  2107.                          Cutie!
  2108.             
  2109.                When this form letter was printed, the text would read: 
  2110.           Hello there, Cutie!
  2111.             
  2112.                Note that there would be no indentation from the left
  2113.           margin, and all other spaces would be trimmed except the one
  2114.           space added between the two records.  
  2115.             
  2116.                When you really want spaces in FoxBASE+ version form
  2117.           letters, insert CHR(255) on the left margin of a record.  Then
  2118.           it can be followed by as many spaces as desired.  To insert
  2119.           this character, hold down the ALT key and type 255 with the
  2120.           numeric keypad.
  2121.  
  2122.                Clipper and dBASE-compatible index versions of
  2123.           WAMPUM use standard ASCII documents which, when merged,
  2124.           are printed exactly as they are created except merge text is
  2125.           inserted into the form letters as coded.
  2126.  
  2127.                All WAMPUM Form Letters may contain special markers
  2128.           (field data expressions) which tell WAMPUM to extract or
  2129.           evaluate information in the primary data base when the form
  2130.           letter is merged.  In FoxBASE+ versions of WAMPUM, you
  2131.           may have only one field data expression in each record of the
  2132.           form letter file.  In other versions, there are no limitations on
  2133.           number or spacing of field data expressions.
  2134.             
  2135.                A FIELD DATA EXPRESSION always begins and ends
  2136.           with //.  In its simplest form, an expression such as
  2137.           //LASTNAME// would tell WAMPUM to extract the contents
  2138.           of the LASTNAME field in the current record and insert it
  2139.  
  2140.  
  2141.                                                       34
  2142.  
  2143.  
  2144.           into the form letter at this place.  The beginning and ending
  2145.           //'s must be part of the same record in FoxBASE+ versions. 
  2146.  
  2147.                In FoxBASE+ versions only, you may block off a section
  2148.           of text in the form letter which will be affected by the
  2149.           evaluation of the expression itself.  For instance, if a
  2150.           particular field is blank in the data base, the form letter may
  2151.           contain a special code telling WAMPUM to omit all of the text
  2152.           which has been blocked off.  TEXT MARKERS consist of @@ at
  2153.           the beginning and ending of the affected text.  Note that these
  2154.           markers may not extend beyond a single record.  Thus, you
  2155.           cannot have one pair of @'s in record 5 and the other pair in
  2156.           record 6.  An equivalent functionality is available in other
  2157.           versions using the immediate IF function specifying the text to
  2158.           be printed if the condition is true or false.
  2159.  
  2160.             An example of the FoxBASE+ syntax would be the following. 
  2161.           Suppose you want to thank people for contributing to your
  2162.           reelection campaign.  In your data base is a field CONTRIBDT
  2163.           which will be empty if no contribution has been received.  The
  2164.           record entry in the form letter might say:
  2165.           @@Thanks for being a supporter!//*CONTRIBDT//@@ 
  2166.  
  2167.                This entry means if CONTRIBDT is not blank, then print
  2168.           the text: Thanks for being a supporter!  Otherwise, leave this
  2169.           sentence out of the form letter entirely.  In other versions, an
  2170.           equivalent entry would be the following:
  2171.  
  2172.           //=IIF(.NOT. EMPTY(ContribDt),"Thanks supporter!","")//
  2173.  
  2174.                The following section describes all FIELD DATA
  2175.           EXPRESSIONS implemented to date. See the README.DOC file
  2176.           for any additional enhancements.
  2177.             
  2178.                Another difference in FoxBASE+ Form Letters and other
  2179.           version form letter text is that the FoxBASE+ version needs to
  2180.           know when you really do want to end a paragraph.  This is
  2181.           referred to as a hard carriage return with many word
  2182.           processing packages. WAMPUM FoxBASE+ versions interpret a
  2183.           blank record in the form letter file or a record beginning
  2184.           with a tilde (~) as a hard carriage return.  Note that if you
  2185.           want a hard return in a form letter and a blank line between
  2186.           paragraphs, you will need to insert two blank records in the
  2187.           form letter file or two records beginning with a tilde.  All
  2188.           text following a tilde is ignored if the tilde is the first
  2189.           character on the line. 
  2190.  
  2191.                Finally, remember that WAMPUM form letters are built
  2192.           on the fly when you actually run the form letter program. 
  2193.           Make certain that you end all form letter files with at least
  2194.           one blank line or record and preferably two.  This will assure
  2195.  
  2196.  
  2197.                                                       35
  2198.  
  2199.  
  2200.           that the form letter buffer is purged before the next form
  2201.           letter is produced. 
  2202.  
  2203.             
  2204.             2.1.10.3.4  WAMPUM Field Data Expressions
  2205.             
  2206.                What follows is a listing of the syntax for various FIELD
  2207.           DATA EXPRESSIONS together with an example of each
  2208.           expression.  The best way to get a feel for using WAMPUM
  2209.           Form Letters is to build a few.  It provides more power and
  2210.           flexibility in this area than any commercial product on the
  2211.           market.  Like any powerful programming tool, however, it takes
  2212.           a little getting used to. 
  2213.  
  2214.  
  2215.           //LASTNAME//
  2216.  
  2217.           Allows imbedding a character, numeric, or date field within a
  2218.           form letter record.  It would output Jones if Jones were in
  2219.           the LASTNAME field. Note: if a date field, it outputs the date
  2220.           in the format May 21, 1986 if entry is 05/21/86. 
  2221.  
  2222.  
  2223.           @@Thanks //LASTNAME//.@@  (FoxBASE+ versions only)
  2224.  
  2225.           Allows imbedding a CHARACTER FIELD with a string of text
  2226.           which will print only if the field is not blank.  It would
  2227.           output Thanks Jones. if Jones were in the LASTNAME field. 
  2228.  
  2229.  
  2230.           @@Filed.//*FILINGDT//@@  (FoxBASE+ versions only)
  2231.  
  2232.           Tests whether a particular character, numeric, or date field is
  2233.           not blank or whether a logical field is True.  In either case, if
  2234.           True the output would be Filed. Otherwise, nothing would be
  2235.           printed.
  2236.  
  2237.             
  2238.           @@Not filed.//#FILINGDT//@@  (FoxBASE+ versions only)
  2239.  
  2240.           Just the opposite of the above. If the character, numeric, or
  2241.           date field is empty or if the logical field is False, the
  2242.           expression is printed. Otherwise, nothing would be printed. 
  2243.  
  2244.  
  2245.           @@A new baby!//?PREGNANT//@@  (FoxBASE+ only)
  2246.  
  2247.           Similar to above.  Used only with a logical field.  If logical
  2248.           field is True, the expression is printed.
  2249.  
  2250.  
  2251.  
  2252.  
  2253.                                                       36
  2254.  
  2255.  
  2256.           @@So you're 30.//!AGE=30//@@  (FoxBASE+ only)
  2257.  
  2258.           Allows any dBASE III expression as the test for whether the
  2259.           text should be printed. If the test is True, the text is printed. 
  2260.           Make certain that both sides of the expression are of  the
  2261.           same data type.  This example would print So you're 30! if the
  2262.           AGE numeric field = 30. 
  2263.  
  2264.  
  2265.           // AGE=30//  (FoxBASE+ versions only)
  2266.  
  2267.           This is the syntax for a GOTO using the WAMPUM form
  2268.           letter generator.  Note the SPACE at the beginning of the
  2269.           expression which means, IF the expression is True, SKIP to
  2270.           the next record beginning with a SPACE character.  If you
  2271.           want to  skip past a required carriage return record, make
  2272.           certain that the record begins with a tilde and not with a
  2273.           SPACE since blank records are assumed to be those containing
  2274.           all spaces. 
  2275.  
  2276.  
  2277.           //+SAMPLE.DOC// 
  2278.  
  2279.           With lengthy pieces of text with no embedded data, it is often
  2280.           easier to type them into a plain ASCII document using a text
  2281.           editor.  You then can merge them into a WAMPUM form letter
  2282.           with the syntax shown which says read in the SAMPLE.DOC
  2283.           text file at this point in the form letter.  Note that this
  2284.           command should appear in a record by itself with no other
  2285.           text.
  2286.  
  2287.             
  2288.           //=DTOC(DATE())// 
  2289.  
  2290.           There may be times when you just want to reformat some
  2291.           data directly out of the data base. The = operand allows this
  2292.           to be done with any dBASE expression so long as it evaluates
  2293.           to a STRING EXPRESSION when it is processed. 
  2294.  
  2295.  
  2296.           //<#,filename,indexname//
  2297.  
  2298.           Using the < command allows you to open up to 5 related data
  2299.           bases from within a form letter file.  Replace the pound sign
  2300.           (#) with a number from 5 through 9. Note that 5 corresponds
  2301.           to the number of the related data base opened with the
  2302.           Zoom/Relate File option.  It need not be reopened.  Paths may
  2303.           be included in identifying both the filename and the indexname.
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.                                                       37
  2310.  
  2311.  
  2312.           //>#,string expression//
  2313.  
  2314.           Using the > command permits you to do an indexed SEEK by
  2315.           key value to any record in the file identified by the number
  2316.           replacing #.  This numbered file and a corresponding index
  2317.           must already have been opened using the < command. The
  2318.           string expression may be the contents of a field  in the
  2319.           primary data base or any dBASE string expression.  If the
  2320.           name of a field in the primary data base is used, be sure to
  2321.           precede it with the ALIAS for the file using the following
  2322.           syntax: ALIAS->fieldname where ALIAS is the actual file name
  2323.           of the primary data base and fieldname is the legal field name
  2324.           of a field in the primary file. Once the SEEK has been
  2325.           accomplished, any data in the secondary data base may be
  2326.           extracted using the = field data expression outlined above and
  2327.           the ALIAS->fieldname syntax where ALIAS is the name of the
  2328.           secondary data base file and fieldname is the name of a field
  2329.           in that file. 
  2330.  
  2331.  
  2332.           //FF// 
  2333.  
  2334.           The FF command allows the user to generate a form feed or
  2335.           page eject from within a form letter file. 
  2336.  
  2337.  
  2338.           //NOFF//
  2339.  
  2340.           The NOFF command turns off automatic form feeds which
  2341.           normally are generated after each record is processed.
  2342.  
  2343.  
  2344.           //@LMargin,RMargin//
  2345.  
  2346.           Permits the resetting of the default left and right margin
  2347.           within a form letter.  It can only be reset once, and it
  2348.           applies to the entire form.  For example, //@15,70// would
  2349.           reset the left margin to 15 and the right margin to 70. 
  2350.  
  2351.  
  2352.           //}LABEL,Logical Expression//  (Clipper/dBASE versions)
  2353.  
  2354.           Provides a functionality equivalent to BASIC's IF .. THEN ..
  2355.           GOTO.  LABEL is the name of the WAMPUM LABEL to jump
  2356.           to when the specified Logical Expression evaluates True.
  2357.  
  2358.           The syntax for the GOTO LABEL is //{LABEL}//. For example,
  2359.           //}CHEAPSKATE,PurchAmt=0// would instruct a form letter to
  2360.           jump to //{CHEAPSKATE}// if the value of the PURCHAMT
  2361.           field equates to 0.
  2362.  
  2363.  
  2364.  
  2365.                                                       38
  2366.  
  2367.  
  2368.             2.1.11  Building Function Key Macros (KEYS.DBF) 
  2369.  
  2370.                As an aid in data entry intensive applications, WAMPUM
  2371.           provides the capability to define up to 39 keyboard macros (9
  2372.           in FoxBASE+ versions) which may be invoked by the end-user
  2373.           simply by pressing a function key.  As is true with WAMPUM
  2374.           applications in general, these keyboard macros are application
  2375.           specific.  This means that a set of keyboard macros may be
  2376.           defined for every application in each new directory created on
  2377.           your disk.
  2378.             
  2379.                The name of the file which stores the macros is
  2380.           KEYS.DBF which is a standard dBASE III data base file.  It is
  2381.           created automatically whenever WAMPUM is first run in a new
  2382.           subdirectory. To build the table of macro definitions, follow
  2383.           the steps below.  
  2384.  
  2385.                First, select the KEYS.DBF file as the file with which
  2386.           you want to work by picking the F - File Select option on the
  2387.           Main Menu. Enter the file name KEYS when prompted to do so. 
  2388.           When the Main Menu reappears, the bottom line of the screen
  2389.           should say: 
  2390.  
  2391.                               FILE: KEYS
  2392.             
  2393.                Next, you will want to figure out what keystrokes you
  2394.           want to store under which function keys.  The following
  2395.           function keys are available for use:
  2396.             
  2397.                F2 - F10
  2398.                Shift F1 - Shift F10     (except FoxBASE+ versions)
  2399.                Ctrl F1 - Ctrl F10       (except FoxBASE+ versions)
  2400.                Alt F1 - Alt F10         (except FoxBASE+ versions)
  2401.  
  2402.                Function key F1 is reserved by WAMPUM for HELP. 
  2403.  
  2404.                Record numbers in the KEYS file match the function keys
  2405.           by key number.  See the table below:
  2406.  
  2407.  
  2408.                Function Keys            Record Numbers
  2409.  
  2410.                F2 - F10                 Rec #  2 - 10
  2411.                Shift F1 - F10           Rec # 11 - 20
  2412.                Ctrl F1 - F10            Rec # 21 - 30
  2413.                Alt F1 - F10             Rec # 31 - 40
  2414.  
  2415.                 Thus, whatever keystrokes are entered in record 5 of
  2416.           the KEYS file will automatically be assigned to function key
  2417.           F5.  Those in record 40 will be assigned to function key ALT-
  2418.           F10.  Any record in the KEYS.DBF file which is blank will be
  2419.           ignored. 
  2420.  
  2421.                                                       39
  2422.  
  2423.  
  2424.  
  2425.                There are two rules to remember in entering data in the
  2426.           records of the KEYS file.  
  2427.  
  2428.                (1) Record 1 of the KEYS file is always ignored since it
  2429.                corresponds to the HELP function key, F1. 
  2430.  
  2431.                (2)  Every entry in the KEYS file must equate to a
  2432.                CHARACTER STRING when evaluated by WAMPUM.
  2433.             
  2434.                The first rule is only logical.  Since F1 is reserved for
  2435.           HELP, the corresponding record in the KEYS file is ignored. 
  2436.           Note that you will have to ADD a first record which automa-
  2437.           tically will be record 1.  Simply press <ENTER> to save it and
  2438.           create record 2 which can be used for function key F2.
  2439.             
  2440.                The second rule is critical because if it is violated you
  2441.           will get run-time errors the next time WAMPUM is started. 
  2442.           If this happens, simply ignore each error (which means that
  2443.           function key will not be set), then edit the records causing
  2444.           the problems following the steps outlined above. 
  2445.  
  2446.                Translated into dBASE III lingo, each record in the KEYS
  2447.           file must be a character string.  If it is simply character data,
  2448.           you meet this requirement by enclosing the data in double or
  2449.           single quotes.  If you have single quotes in the string, then
  2450.           enclose the string in double quotes and vice versa. 
  2451.  
  2452.                You can also use dBASE III functions and special
  2453.           WAMPUM functions to create macros so long as the expression
  2454.           evaluates to a string.  Here are examples to get you started: 
  2455.  
  2456.                DTOC(DATE()) would convert today's date to a character
  2457.                string and store it as a macro in the following format:
  2458.                10/10/86.
  2459.  
  2460.                FULLDATE(DATE()) would store today's date as a macro
  2461.                in the following format: October 10, 1986.
  2462.             
  2463.                DTOC(DATE()+30) would store today's date + 30 days. 
  2464.  
  2465.                CDOW(DATE()) would store the day of the week for today
  2466.                in a macro in the following format: Tuesday.
  2467.             
  2468.                STR(YEAR(DATE()),4) would store this year as a string in
  2469.                the following format: 1988.
  2470.             
  2471.                DTOC(WeekDay(DATE()+30)) would store the date 30 days
  2472.                from today rolled over to Monday if it hits on weekend
  2473.                in the following date format: 10/10/86.  To convert the
  2474.                WEEKDAY expression to a date required that it be
  2475.                preceded by DTOC().
  2476.  
  2477.                                                       40
  2478.  
  2479.  
  2480.  
  2481.                Again, the important thing to remember is that character
  2482.           text must be enclosed in quotes, and data other than
  2483.           character data must be converted into a character string using
  2484.           a dBASE III or WAMPUM conversion functions.
  2485.             
  2486.                Note that keyboard macros do not take effect until the
  2487.           next time WAMPUM is started from DOS.  They will be loaded
  2488.           on each subsequent running of the program unless changed.
  2489.           Developers should be careful not to store a file named
  2490.           KEYS.DBF in the DOS PATH unless you intend to invoke the
  2491.           macros contained therein whenever an application starts and a
  2492.           file named KEYS.DBF cannot be found in the default directory.
  2493.             
  2494.             2.1.12  Building Edit Checks (EDIT.DBF)
  2495.             
  2496.                As an aid in data entry accuracy, WAMPUM provides the
  2497.           capacity to design custom edit checks for each WAMPUM
  2498.           application.  As was true with keyboard macros, a set of edit
  2499.           checks may be defined for each application in each new
  2500.           directory created on your disk.
  2501.             
  2502.                The name of the file which stores the edit checks is
  2503.           EDIT.DBF which is a standard dBASE III data base file.  It is
  2504.           created automatically whenever WAMPUM is first run in a new
  2505.           subdirectory. To build the table of edit checks, follow the
  2506.           steps below. 
  2507.             
  2508.                First, select the EDIT.DBF file as the file with which
  2509.           you want to work by picking the F - File Select option on the
  2510.           Main Menu.  Enter the file name EDIT when prompted to do
  2511.           so.  When the Main Menu reappears, the bottom line of the
  2512.           screen should say: 
  2513.  
  2514.                            FILE: EDIT
  2515.             
  2516.                Next, figure out what edit checks need to be developed
  2517.           for the particular application.  For some applications, you may
  2518.           want to assure that a data entry field is never left blank.  For
  2519.           others, you may want to assure that a duplicate key is never
  2520.           entered.  Finally, you may want to assure that any field entry
  2521.           is contained in a table of valid entries.  None of these checks
  2522.           are possible in dBASE III without substantial custom
  2523.           programming.  WAMPUM provides this capability with a couple
  2524.           minutes work. 
  2525.  
  2526.                The EDIT file structure consists of two fields: EDITTEST
  2527.           and ERRMSG.  The theory behind WAMPUM edit checks is a
  2528.           simple one.  Once you "turn on" the edit checks for use
  2529.           against a particular file, WAMPUM automatically tests newly
  2530.           added records as well as updated existing records to make
  2531.           certain that they do NOT violate any of the error conditions
  2532.  
  2533.                                                       41
  2534.  
  2535.  
  2536.           (EDITTESTs) you have specified in the EDIT file. The checks
  2537.           are only run when new records are added to a data base or
  2538.           existing records are changed.  For each error condition
  2539.           identified, WAMPUM will display an error message (ERRMSG)
  2540.           and then permit the end-user to fix the problems.  The end-
  2541.           user cannot SAVE the record with errors without correcting
  2542.           them.  The end-user may <ESC>ape from a data entry screen
  2543.           without invoking WAMPUM's edit checking. In the FoxBASE+
  2544.           versions only, edit checks are not invoked when a user enters
  2545.           data while in full browse mode.
  2546.             
  2547.                Since developers typically work with several files in
  2548.           creating a new application, there are some instances in which
  2549.           you would not want the edit checks to execute.  Most impor-
  2550.           tantly, when the primary data base is not being used, you
  2551.           would not want to invoke a series of edit checks designed to
  2552.           check primary data base information.  This is handled in a
  2553.           simple way. WAMPUM always reads the EDITTEST field entry
  2554.           in the first record of the EDIT.DBF to ascertain the name of
  2555.           the file to be checked.  If this entry does not match in UPPER
  2556.           CASE the name of the current file in use, the edit checks are
  2557.           turned off.  Stated somewhat differently, the EDITTEST field
  2558.           of Record 1 of EDIT.DBF is reserved to hold the UPPER CASE
  2559.           name of the data base to be edit checked.  Thus, in the case
  2560.           of our example, the entry in Record 1 of EDIT.DBF should say
  2561.           CUSTOMER.  If you forget to enter the name of the data base
  2562.           file to be checked in record 1, then obviously the edit checks
  2563.           specified will never be invoked! 
  2564.  
  2565.                There also may be occasions where you want to specify
  2566.           the actual fields to be displayed with BROWSE MODE ON
  2567.           rather than accepting WAMPUM's default which is the first few
  2568.           fields in the actual data base structure.  If you want to specify
  2569.           your own fields, insert the following in the ERRMSG field of
  2570.           Record 1. The first character must be an asterisk (*).  It is
  2571.           followed by the field numbers (from your file structure listing)
  2572.           of the fields you want displayed.  All numbers must be three
  2573.           characters wide and should be padded to the left with spaces. 
  2574.           Three digit numbers should be preceded by a single space. For
  2575.           example, if you want the fields LASTNAME, FIRSTMI, and
  2576.           ADDRESS to display in BROWSE mode and these are fields 1,
  2577.           2, and 3 in your data base, the correct syntax would be:
  2578.  
  2579.           *  1  2  3.
  2580.             
  2581.  
  2582.                There are three things to keep in mind in developing
  2583.           your edit checks.  
  2584.  
  2585.                (1) Edit checks must be dBASE III or WAMPUM
  2586.                expressions which can be evaluated as True or False.  
  2587.  
  2588.  
  2589.                                                       42
  2590.  
  2591.  
  2592.                (2) If the expression in EDITTEST is true, the error
  2593.                message in ERRMSG is triggered.  In other words, you are
  2594.                building expressions which identify when an error
  2595.                condition occurs rather than the other way around.  
  2596.  
  2597.                (3) And most importantly, if you wish to evaluate data
  2598.                entered in a particular field, you do NOT use the
  2599.                fieldname to test for an error.  Instead you use the
  2600.                field's sequential number in the data base in conjunction
  2601.                with an array named FLDDATA() for FoxBASE+ versions
  2602.                or FLDDATA[] for other versions.
  2603.  
  2604.                This paragraph will clear up any confusion you are
  2605.           momentarily experiencing.  Since you need to know a field's
  2606.           position in the file structure in order to develop edit checks,
  2607.           your first step should be to print out the file structure of the
  2608.           file which will be checked.  Pick the S - Select Utilities option
  2609.           after making certain that the correct file is in use.  Change
  2610.           the List File Structure option to T or Y, then answer Y when
  2611.           prompted for whether to print the structure. 
  2612.  
  2613.                This will give you the list of fields in the data base. 
  2614.           Note that the left column shows the field's NUMBER in the
  2615.           structure.  Let us assume that the LASTNAME field is field
  2616.           number 1.  
  2617.  
  2618.                An appropriate edit check to assure the LASTNAME field
  2619.           was not left blank would read as follows:
  2620.  
  2621.                FLDDATA(1)=SPACE(20)  in FoxBASE+ versions, or
  2622.                FLDDATA[1]=SPACE(20)  in other versions.
  2623.  
  2624.                One of the above entries should be entered as the
  2625.           EDITTEST entry in the EDIT file.  The ERRMSG field entry
  2626.           might say something like this: The LASTNAME field cannot be
  2627.           left BLANK.  Whenever the EDITTEST record evaluates to
  2628.           TRUE, meaning the LASTNAME field is all spaces, then the
  2629.           ERRMSG would be displayed.  The important thing to remember
  2630.           is to use the appropriate array name and not LASTNAME in
  2631.           identifying the field to be checked!  
  2632.  
  2633.                Note that you also can check one field against another
  2634.           in the same data entry screen.  For example, assume there
  2635.           were two fields in the data base as follows:
  2636.  
  2637.                1    TRANSCODE      Character      8
  2638.                2    TRANSDATE      Date           8 
  2639.  
  2640.                Let's assume that the format of the TRANSCODE entries
  2641.           is of the form: 88-12345 where 88 identifies the year of the
  2642.           transaction. One edit check you probably would want to
  2643.           perform in a situation such as this is to make sure the first
  2644.  
  2645.                                                       43
  2646.  
  2647.  
  2648.           two digits of the TRANSCODE matched the year in the
  2649.           TRANSDATE field.  Here is one possible way to handle this:
  2650.  
  2651.           Substr(FldData[1],1,2)<>Substr(DTOC(FldData[2]),7,2) 
  2652.  
  2653.                Note in the example that the relationship must be coded
  2654.           so that when it is TRUE, the error message displays.  Thus,
  2655.           we want to code it in such a way that when the first two
  2656.           characters of the TRANSCODE do not match the year in the
  2657.           TRANSDATE, the expression is True and hence the error
  2658.           message is given.  Note also that the expressions on both sides
  2659.           of the relational operator must be of the same type.  In this
  2660.           case, both are character strings.  The DTOC() function
  2661.           converts a date expression to a character string.
  2662.  
  2663.                Finally, it should be noted that these EDIT CHECKS will
  2664.           not take effect until the next time WAMPUM is run with the
  2665.           appropriate file in use.  They will be loaded on each
  2666.           subsequent running of the program unless changed. 
  2667.             
  2668.                                    Creating Calculated Fields 
  2669.  
  2670.                To automatically calculate the value for a field, that
  2671.           field must be one of the fields in the active data base. 
  2672.           Typically, you would NOT want it to display on a data entry
  2673.           screen since its value will be changed automatically regardless
  2674.           of what the user enters.  This calculation capacity may be used
  2675.           to compute both dates and numeric values and if necessary can
  2676.           also be used to compute values for character and logical fields. 
  2677.           To automatically calculate the value for a field, follow these
  2678.           steps: 
  2679.  
  2680.                (1)  In the EDITTEST field, the first character must be
  2681.                the equals sign (=).  This is followed by whatever
  2682.                selection criteria will be used to determine when the
  2683.                calculation IS performed.  If you want it done whenever
  2684.                a record is added or changed, then the EDITTEST field
  2685.                should look like the following: =.T.
  2686.             
  2687.                Note: WAMPUM keeps track of what mode it is in by
  2688.                setting a variable HELPCODE to the number corresponding
  2689.                to the option picked from the Main System Menu, e.g. A -
  2690.                 Add is 1, E - Edit is 2, etc. 
  2691.  
  2692.                You may find it helpful to be able to perform calculated
  2693.                field transactions only when the user is in Edit mode or
  2694.                Add mode.  If you only wanted a field calculated when a
  2695.                new record was added, use the following syntax in the
  2696.                EDITTEST field: =HELPCODE=1
  2697.  
  2698.                (2)  In the ERRMSG field, two codes must be inserted and
  2699.                they are separated by a comma.  The first is the field
  2700.  
  2701.                                                       44
  2702.  
  2703.  
  2704.                number corresponding to the field to be calculated.  Now
  2705.                type a comma. Then enter any valid dBASE expression to
  2706.                handle the calculation desired.  A simple example may
  2707.                help. 
  2708.  
  2709.  
  2710.                Assume that a data base contains a FILINGDT field as #1,
  2711.           a DAYSPEND field as #14, and a CLOSEDT field as #20.  Until
  2712.           a closing date entry has been made, we want the computer to
  2713.           recompute the days pending from the filing date whenever a
  2714.           new record is added or changed.  The field entries should look
  2715.           like this: 
  2716.  
  2717.                     EDITTEST: =EMPTY(FLDDATA[20])
  2718.             
  2719.                     ERRMSG: 14,DATE()-FLDDATA[1]
  2720.  
  2721.  
  2722.                          Using "Table-Lookup" for Editing 
  2723.  
  2724.                Table Lookup for Editing means the ability of a data
  2725.           base system to refer to a table of values in order to
  2726.           determine whether a value entered by a user is acceptable. 
  2727.           Within WAMPUM, table-lookup is implemented using standard
  2728.           dBASE data bases for the tables.  These data bases may be
  2729.           checked either sequentially or through an index file as the
  2730.           developer desires.  To perform "table lookup" as part of the
  2731.           edit checking process, the following rules must be met:
  2732.             
  2733.                (1)  In the EDITTEST field, the first character must be a
  2734.                question mark (?) if a non-indexed dBASE file will be
  2735.                used as the table.  Or two question marks (??) must be
  2736.                used if a dBASE file table will be checked using a
  2737.                WAMPUM index as the key.  The question mark or marks
  2738.                are followed by whatever selection criteria the developer
  2739.                wants to specify to tell WAMPUM when the table lookup
  2740.                should be performed.  See the examples. 
  2741.  
  2742.                (2)  In the ERRMSG field, three values must be inserted
  2743.                with a comma between the values.
  2744.             
  2745.                     (a)  The first code is the number of the field to be 
  2746.                     checked against the table. Then type a comma. 
  2747.  
  2748.                     (b)  The second code is the dBASE file name of the 
  2749.                     table to be checked (without the .DBF extension). 
  2750.                     Then type a comma.
  2751.  
  2752.                     (c)  The third code is one of two values.  With a
  2753.                     non-indexed table lookup (?), the third code is the
  2754.                     name of the field in the table lookup file to be
  2755.                     compared.  With an indexed table lookup (??), the
  2756.  
  2757.                                                       45
  2758.  
  2759.  
  2760.                     third code is the name of the WAMPUM index file
  2761.                     (without file extension) to use for the lookup. 
  2762.  
  2763.                An example may help remove some of the mystery. If your
  2764.           main data base has a field #5 for the user to enter the
  2765.           abbreviation of the STATE where the customer lives, we want
  2766.           to make sure this entry is, in fact, a state in the United
  2767.           States.  Using WAMPUM, you build another data base with a
  2768.           file name of STATES and an index called ABBREV which holds
  2769.           the two character abbreviation for each state in the United
  2770.           States.  Your entries would look like the following in the
  2771.           EDIT record: 
  2772.  
  2773.                       EDITTEST: ??.T.
  2774.             
  2775.                       ERRMSG: 8,STATES,ABBREV
  2776.  
  2777.  
  2778.  
  2779.                     Using "Table-Lookup" for Calculated Fields 
  2780.  
  2781.                Just as a table can be checked to verify data in your
  2782.           data bases, WAMPUM also permits table-lookup to actually
  2783.           calculate the contents of fields in your primary data base. 
  2784.           The table may be accessed either sequentially or through a
  2785.           WAMPUM-index file as the developer desires.  To calculate a
  2786.           table follow these simple steps in adding an entry to the EDIT
  2787.           file: 
  2788.  
  2789.                (1)  In the EDITTEST field, the first character must be
  2790.                an exclamation point (!) if a non-indexed dBASE file will
  2791.                be used as the table.  Or two exclamation points (!!) must
  2792.                be used if a dBASE file table will be referenced using a
  2793.                WAMPUM index as the key.  The exclamation point(s) are
  2794.                followed by whatever selection criteria the developer
  2795.                wants to specify to tell WAMPUM when the table lookup
  2796.                calculation SHOULD be performed.
  2797.  
  2798.                (2)  In the ERRMSG field, five values must be inserted
  2799.                with a comma between the values.
  2800.             
  2801.                     (a)  The first code is the number of the field in
  2802.                     the primary data base to be used to find a match in
  2803.                     the table. Then type a comma. 
  2804.             
  2805.                     (b)  The second code is the dBASE file name of the 
  2806.                     table to be checked (without the .DBF extension). 
  2807.                     Then type a comma.
  2808.             
  2809.                     (c)  The third code is one of two values.  With a
  2810.                     non-indexed table lookup (!), the third code is the
  2811.                     name of the field in the table lookup file to be
  2812.  
  2813.                                                       46
  2814.  
  2815.  
  2816.                     compared.  With an indexed table lookup (!!), the
  2817.                     third code is the name of the WAMPUM index file
  2818.                     (without file extension) to use for the lookup. Then
  2819.                     type a comma.
  2820.             
  2821.                     (d)  The fourth code is the number of the field in
  2822.                     the primary data base to be calculated from the
  2823.                     table.  Then type a comma.
  2824.             
  2825.                     (e)  The fifth code is any legal dBASE expression
  2826.                     which specifies the value to be calculated for the
  2827.                     field  referenced in (2)(d) above.  This expression
  2828.                     would include references to one or more fields in
  2829.                     the table typically.
  2830.             
  2831.                By way of example, let us assume that a company
  2832.           maintains an ORDERS file with numerous pieces of information
  2833.           being captured about new orders.  Among these are the part
  2834.           number (field #1) and the part cost (field #2).  There also is a
  2835.           table of PARTS which contains the cost of each part
  2836.           (PARTCOST) in the company's inventory.  The developer wants
  2837.           to look up the cost of the part specified in the ORDERS file
  2838.           and insert it automatically into the part cost field in the
  2839.           ORDERS file.  The syntax to do this using a PARTS file
  2840.           indexed on part number would look like this: 
  2841.  
  2842.                     EDITTEST: !!.T.
  2843.             
  2844.                     ERRMSG: 1,PARTS,PARTNO,2,PARTCOST 
  2845.  
  2846.  
  2847.  
  2848.             2.1.13  Building Data Entry Menus (MENUS.DBF) 
  2849.  
  2850.                WAMPUM supports three different types of data entry
  2851.           menus: (1) automatic; (2) semi-automatic; and (3) user-
  2852.           defined.  FoxBASE+ versions also support standard dBASE
  2853.           format files.
  2854.  
  2855.                Automatic means if the developer does not create one or
  2856.           more data entry screens, then WAMPUM will automatically
  2857.           build a data entry screen permitting data entry and retrieval
  2858.           from every field in the active data base.
  2859.  
  2860.                Semi-automatic means that the developer may specify one
  2861.           or more fields to be displayed on each of 9 data entry menus. 
  2862.           These values are stored in the MENUS.DBF file.  WAMPUM will
  2863.           read the listings of fields selected by the developer and will
  2864.           generate an appropriate data entry screen to display the
  2865.           selected fields.
  2866.  
  2867.  
  2868.  
  2869.                                                       47
  2870.  
  2871.  
  2872.                User-defined means the developer may choose to define
  2873.           all prompts and all locations for data on the data entry screen
  2874.           for up to 9 data entry menus.  WAMPUM then will build a
  2875.           screen to match exactly what was defined.  In FoxBASE+
  2876.           versions, this screen may have multiple pages if a standard
  2877.           dBASE format file is used.
  2878.  
  2879.  
  2880.  
  2881.                          Semi-Automatic Data Entry Screens
  2882.  
  2883.                Up to 9 semi-automatic data entry menus may be built for
  2884.           any given application.  These typically correspond to different
  2885.           stages in the data entry process for a given data base.  In
  2886.           addition to these 9 data entry menus, WAMPUM also provides
  2887.           the standard data entry screen which includes access to every
  2888.           field in the current data base.
  2889.             
  2890.                These data entry menus are numbered 0 to 9 with 0 being
  2891.           the default automatic menu with access to all fields.  In
  2892.           addition to specifying up to 9 custom menus, developers may
  2893.           also restrict users without the developer password to a given
  2894.           range of menu numbers.  Thus, some care must be exercised to
  2895.           group the restricted and non-restricted menus into contiguous
  2896.           numbers.  A range of 1 to 5 is permissible, but you cannot
  2897.           allow access to menu 0 as well as access to menus numbered 2
  2898.           through 6.
  2899.  
  2900.                Information pertaining to the custom menus is stored in
  2901.           a standard dBASE file named MENUS.DBF which is created in
  2902.           the current default directory whenever WAMPUM is first
  2903.           invoked.  Each record in the MENUS file corresponds to a
  2904.           custom menu with the same number.  Thus, record 1 contains
  2905.           information about menu 1, and so on.
  2906.             
  2907.                To build one or more semi-automatic menus, first start
  2908.           up WAMPUM in Developer Mode by specifying the developer
  2909.           password after the word WAMPUM.  Make certain that the File
  2910.           in Use at the bottom of the screen is the one for which you
  2911.           want to build the custom menus.  If so, choose S - Select
  2912.           Utilities and change the List File Structure field entry to T.
  2913.           Then <PgDn> and print the file structure for reference. 
  2914.                  When the Main System Menu reappears, pick F - File
  2915.           Select and enter the file name of MENUS. Press <ENTER> and
  2916.           WAMPUM will open the MENUS file.  When the Main System
  2917.           Menu reappears, make sure the bottom line of the screen shows
  2918.           the file name MENUS. 
  2919.  
  2920.                To ADD a new semi-automatic menu, pick A - Add
  2921.           Records from the Main System Menu. A blank record will
  2922.           appear with two fields: MENUNAME and FLDLIST.  As the
  2923.           name suggests, MENUNAME is whatever name you want to
  2924.  
  2925.                                                       48
  2926.  
  2927.  
  2928.           assign to this custom menu, CUSTOMER OPENING MENU.
  2929.           Enter the title desired and press <ENTER> to move to the
  2930.           FLDLIST field. 
  2931.  
  2932.                In FLDLIST, you specify the field numbers corresponding
  2933.           to the fields you want displayed on the data entry screen. 
  2934.           The sequence used to specify the numbers does not matter
  2935.           since the fields always are ordered according to their numeric
  2936.           position in the data base structure.  The format for these field
  2937.           numbers, however, is CRITICAL! 
  2938.             
  2939.                Rule 1: Each field number must be AT LEAST 3 characters
  2940.                in length with spaces to the left of the number to "pad"
  2941.                it to 3 characters. For example, field 1 would require
  2942.                that you type two spaces and then the number 1.  27
  2943.                would require one leading space and then 27. 
  2944.  
  2945.                Rule 2: Each field number must be preceded by at least
  2946.                one space. Field 106 would require space then 106. 
  2947.  
  2948.                Rule 3: As many fields may be specified as will fit within
  2949.                the FLDLIST field observing the two rules above.  For
  2950.                example, to create a data entry menu with fields 1, 7, 21,
  2951.                and 107, FLDLIST should look like the following without
  2952.                the quotation marks which have been included only to
  2953.                assist in showing the spaces: 
  2954.  
  2955.                            "  1  7 21 107"
  2956.             
  2957.                Once the FLDLIST field has been specified, press CTRL-W
  2958.           or <PgDn> to save the entry.  A new blank record will appear. 
  2959.           You may continue to add menus or <ESC> to exit to the Main
  2960.           System Menu.
  2961.  
  2962.                Once semi-automatic menus have been defined, you must
  2963.           configure them for end-user access to your application.  This
  2964.           is covered in detail following the next three sections on
  2965.           building and linking custom data entry screens.  If you are
  2966.           not creating custom data entry screens, skip to the section
  2967.           entitled Configuring Menus For End-User Access.
  2968.  
  2969.  
  2970.  
  2971.                          Building Custom Data Entry Screens
  2972.  
  2973.                WAMPUM provides the ability to fully customize data
  2974.           entry screens.  In addition, in FoxBASE+ versions, a standard
  2975.           dBASE format file may be used to develop multi-page data
  2976.           entry screens.  With custom data entry screens, the developer
  2977.           has complete control over the following functions:
  2978.  
  2979.  
  2980.  
  2981.                                                       49
  2982.  
  2983.  
  2984.                1.  Specifying & Positioning of User Prompts
  2985.  
  2986.                2.  Specifying & Positioning of Fields
  2987.  
  2988.                3.  Picture Statements for Fields
  2989.  
  2990.                4.  Read-Only Access to Fields
  2991.  
  2992.                5.  Default Values for Fields
  2993.  
  2994.                Customizing data entry screens involves two steps: (1)
  2995.           building the customized screen and (2) linking the screen to
  2996.           the desired application.
  2997.  
  2998.  
  2999.                               Building WAMPUM Customized Screens
  3000.  
  3001.                Building a WAMPUM customized screen requires the
  3002.           developer to create an empty dBASE III data base with the
  3003.           following file structure.  Use B - Build New File to create it.
  3004.  
  3005.           FIELD NAME  TYPE       LENGTH  DEC 
  3006.  
  3007.            PROMPTROW   N            2     0
  3008.            PROMPTCOL   N            2     0
  3009.            PROMPT      C            45    0
  3010.            FLDROW      N            2     0
  3011.            FLDCOL      N            2     0
  3012.            FLDDATA     N            3     0
  3013.            FLDPIX      C            73    0
  3014.            READONLY    L            1     0
  3015.            DEFAULT     C            60    0
  3016.  
  3017.                The file name for this data base depends upon which of
  3018.           the 9 available menus you are creating.  For the first menu,
  3019.           the file name must be MENU1.DBF.  For the second, it's
  3020.           MENU2.DBF.  The rest should be fairly obvious.
  3021.  
  3022.                Once the data base structure is built, use F - File Select
  3023.           to choose the data base.  Then A - Add New Records to the
  3024.           data base for each prompt and/or field to be displayed on the
  3025.           data entry screen.  For each record, you may specify either a
  3026.           prompt or a field or both to be displayed on the screen.  A
  3027.           brief description of the contents of each field follows.
  3028.  
  3029.           PROMPTROW contains the row number where the prompt
  3030.           should be displayed.  Allowable values are 1 through 24.
  3031.  
  3032.           PROMPTCOL contains the column number where the prompt
  3033.           should be displayed.  Allowable values are 0 thru 79.
  3034.  
  3035.  
  3036.  
  3037.                                                       50
  3038.  
  3039.  
  3040.           PROMPT is the actual text to be displayed on the screen. 
  3041.           Typically, it would be the name of a field.  Although, it can
  3042.           be any text desired.  If you will be using plain text, then you
  3043.           may simply type the text in this field with quotes.  
  3044.  
  3045.           FLDROW is the row on which a field should be displayed for
  3046.           data entry.  Allowable values are 1 through 24.
  3047.  
  3048.           FLDCOL is the column position for display of a field.  The
  3049.           allowable values are 0 through 79.
  3050.  
  3051.           FLDDATA is the field number of the field from the active data
  3052.           base to be displayed.  This number appears on the left column
  3053.           of the List File Structure listing.
  3054.  
  3055.           FLDPIX is a dBASE picture statement specifying how the field
  3056.           should be displayed on the screen.  Consult a dBASE reference
  3057.           for a complete listing of picture statements.  The principal
  3058.           ones include one of the following characters for each byte to
  3059.           be displayed:
  3060.  
  3061.           A - Allows only letters            9 - Allows only numbers
  3062.           X - Allows any character           Y - Allows only Y or N
  3063.           N - Allows numbers and letters     L - Allows only logicals
  3064.  
  3065.  
  3066.                Any other character in a picture statement specifies a
  3067.           constant, meaning that WAMPUM will not allow the user to
  3068.           input a value other than the one specified.  For example,
  3069.           99/99/99 would be a typical picture statement for a date.
  3070.  
  3071.           READONLY is a logical field.  If it is marked True, then the
  3072.           field specified in this record will be displayed but cannot be
  3073.           modified by the end-user.
  3074.  
  3075.           DEFAULT allows the developer to specify a default value for
  3076.           the field in add mode only.  The contents of DEFAULT must
  3077.           be a dBASE expression matching the type of the field chosen
  3078.           in this record.  For example, if the field to be displayed were
  3079.           a DATE field, then the expression must evaluate to a date. 
  3080.           DATE() would tell WAMPUM to enter today's date as the
  3081.           default for a particular date field.  NOTE:  In specifying
  3082.           character field defaults, make certain the string is in quotes
  3083.           and matches the length of the field in the data base!
  3084.  
  3085.                Much of the agony of creating customized data entry
  3086.           screens can be avoided by using MenuMaker, a screen and
  3087.           menu generator, which is available from Ward Mundy Software. 
  3088.           Simply draw the screen, and MenuMaker writes all necessary
  3089.           program code to generate the screen.
  3090.  
  3091.  
  3092.  
  3093.                                                       51
  3094.  
  3095.  
  3096.                     Linking Custom Screens to an Application
  3097.  
  3098.                Once custom data entry screens have been created, the
  3099.           developer next must link these screens to the actual data base
  3100.           application in which it will be used.  
  3101.  
  3102.                First, pick F - File Select to choose the MENUS data
  3103.           base.  Then, add or edit a record in this file corresponding to
  3104.           the menu number assigned to your custom screen.  For
  3105.           example, if the custom screen was named MENU8.DBF, then
  3106.           there must be a corresponding record number 8 in the MENUS
  3107.           data base.  If you don't have that many records added to the
  3108.           data base, then use A - Add Records to add it.
  3109.  
  3110.                Once positioned in record 8, enter a name for this
  3111.           custom menu in MENUNAME just as was done for the semi-
  3112.           automatic menus.  In the FLDLIST field, simply type a single
  3113.           asterisk (*) if you are using a WAMPUM Data Entry Screen
  3114.           data base.  Type a pound sign (#) if you are using a dBASE-
  3115.           compatible format file.  Then save the entry.  This tells
  3116.           WAMPUM to find the corresponding custom menu matching this
  3117.           record number at run time.  Continue to make entries in the
  3118.           MENUS data base for each custom menu designed.  You may
  3119.           mix both types of custom screens in FoxBASE+ versions.
  3120.  
  3121.                Next we must configure WAMPUM for end-user access to
  3122.           a range of menus.  This applies for both semi-automatic and
  3123.           custom data entry screens.  The steps are as follows:
  3124.  
  3125.  
  3126.                     Configuring Menus for End-User Access
  3127.  
  3128.                Assuming you have saved a default configuration, in
  3129.           FoxBASE+ versions, press <ESC>ape and then <ENTER> to
  3130.           reload the default configuration.  In other versions, press ALT-
  3131.           0 to reload the default configuration.  When the Main System
  3132.           Menu reappears, pick S - Select Utilities and mark the Change
  3133.           Current Menu field as True and <PgDn>. 
  3134.  
  3135.                Three fields will appear below the menu list:
  3136.  
  3137.                (1)  Number of current menu to use 
  3138.  
  3139.                (2)  Minimum menu number
  3140.             
  3141.                (3)  Maximum menu number
  3142.             
  3143.                Press <ENTER> to skip through the current menu field. 
  3144.           Then enter values for the minimum menu number and the
  3145.           maximum which correspond to the menus you have created and
  3146.           to which you want the users to have access.  Remember that if
  3147.           the minimum number is 0, users will be able to access and
  3148.  
  3149.                                                       52
  3150.  
  3151.  
  3152.           change every field in the data base!  Make certain that both
  3153.           the minimum menu number and the maximum menu number do
  3154.           NOT exceed the value of the last record in the MENUS file. 
  3155.           The minimum and maximum menu numbers may be the same so
  3156.           long as the rule above is not violated.
  3157.             
  3158.                Once you have entered these values <PgDn> if necessary
  3159.           to return to the Main System Menu.  Now access the Menu
  3160.           Selection screen again by choosing S - Select Utilities, then
  3161.           mark Change Current Menu true, then <PgDn>.  The correct
  3162.           range of menu choices should now be displayed.  Now set the
  3163.           value for the default menu desired and <PgDn> to return to
  3164.           the Main System Menu. Now SAVE this new information as part
  3165.           of your configuration by selecting the option  * - Config
  3166.           Update and pressing <ENTER>.  Then <PgDn>.
  3167.  
  3168.                You now are ready to test the application.  <ESC>ape to
  3169.           DOS and restart WAMPUM in user mode.  Select the A - Add
  3170.           Records option and make certain that the correct menu
  3171.           displays.  Press <ESC>ape.  Now choose S - Select Utilities
  3172.           and mark Change Current Menu true and <PgDn>.  The correct
  3173.           range of menus should appear, and you should only be able to
  3174.           enter a number in the range specified.  If not, restart
  3175.           WAMPUM in Developer Mode and change the ranges following
  3176.           the steps outlined above. 
  3177.  
  3178.                NOTE:  In all except the FoxBASE+ versions of WAMPUM,
  3179.           you can change menus from the Main System Menu by pressing
  3180.           the ALT-M hot key.
  3181.  
  3182.  
  3183.             2.1.14  Building an Audit Trail File (AUDIT.DBF) 
  3184.  
  3185.                For a variety of reasons, it may be desirable to create
  3186.           an audit trail of all data added or changed in a data base. 
  3187.           This can be done as a means of verifying the accuracy of data
  3188.           posted to the data base.  Or it can be done in multi-user
  3189.           environments to provide update integrity to the master data
  3190.           base while many users share access to a copy of the data base
  3191.           from the previous day.  In the latter instance, the audit trail
  3192.           serves as a transaction log of new entries to the master data
  3193.           base.  These transaction logs can be built using numerous
  3194.           workstations.  Then at the end of the day all of the new
  3195.           transactions can be posted to the master data base using
  3196.           WAMPUM's Copy Utilities.  
  3197.  
  3198.                To invoke the Audit Trail/Transaction Logging feature of
  3199.           WAMPUM, you must be using version 2.9 or later of the
  3200.           software. You must assure that some field in your data base
  3201.           has unique values and is indexed before implementing
  3202.           transaction logging. This index must be set as the PRIMARY
  3203.           INDEX before executing a configuration update.  Then select
  3204.  
  3205.                                                       53
  3206.  
  3207.  
  3208.           the * - Config Update option and change the Enable Audit
  3209.           Trail? prompt to True.  Thereafter, WAMPUM will automati-
  3210.           cally create an AUDIT.DBF file in which it will post any
  3211.           changes to the current data base using the index which was
  3212.           the current index at the time of configuration update as the
  3213.           key field in the event later transaction log posting is desired.
  3214.             
  3215.                It is the developer's responsibility to assure that the
  3216.           AUDIT.DBF file is periodically purged since it will continue to
  3217.           grow indefinitely until the Enable Audit Trail prompt is turned
  3218.           back off by setting it false.  Purging consists of deleting
  3219.           AUDIT.DBF and AUDIT.DBT from the current application
  3220.           directory with the following commands:
  3221.             
  3222.                CD \{current application directory}      
  3223.                DEL AUDIT.*
  3224.             
  3225.                Once these files are deleted, WAMPUM will recreate
  3226.           them the next time WAMPUM is run in this directory.  See
  3227.           the section of the User's Guide which addresses the COPY
  3228.           UTILITIES for information on posting transactions to the
  3229.           master data base from an audit trail file.
  3230.  
  3231.  
  3232.             2.1.15  Preformatted Output (WAMPUM.DBF)
  3233.             
  3234.             2.1.15.1  Overview
  3235.             
  3236.                WAMPUM PreFormatted Output is the feature for which
  3237.           many dBASE users have clamored for years.  It is a tool by
  3238.           which a developer can "hard-code" ALL required components to
  3239.           generate report, label, or form letter output in advance. 
  3240.           Stated differently, it frees the end-user from having to specify
  3241.           which records should be printed and in what order every time
  3242.           a report is run.  For each new application you develop,
  3243.           WAMPUM will create a separate data base file, WAMPUM.DBF,
  3244.           which stores up to 80 preformatted reports, labels, and form
  3245.           letters.  The end user then can call up a list of these
  3246.           preformatted output choices and mark the ones desired.  These
  3247.           then are produced automatically with no further user
  3248.           intervention.
  3249.  
  3250.             2.1.15.2  Building the WAMPUM.DBF File
  3251.             
  3252.                The first step in developing WAMPUM Preformatted
  3253.           Output is to create the WAMPUM.DBF file to store the
  3254.           information.  This is done by selecting W - WAMPUM
  3255.           PreFormatted Output from the Main System Menu.  When
  3256.           WAMPUM asks whether to create the WAMPUM file, respond
  3257.           with either T or Y to create the empty data base. 
  3258.  
  3259.  
  3260.  
  3261.                                                       54
  3262.  
  3263.  
  3264.             2.1.15.3  Adding To/Editing the WAMPUM File
  3265.             
  3266.                Building preformatted output is much like adding and
  3267.           editing data in any other .DBF file.  First, pick the F - File
  3268.           Select option from the Main Menu, and choose WAMPUM as
  3269.           the name of the data base to use.
  3270.             
  3271.                When the Main System Menu returns, the bottom of the
  3272.           screen should show the file in use with the message: FILE:
  3273.           WAMPUM. To create a new entry in the file, select the A -
  3274.           ADD record option.  To change an existing entry, select E -
  3275.           EDIT record. 
  3276.  
  3277.                When the data entry screen appears, you will be prompted
  3278.           for the following items of information concerning the report,
  3279.           label, or form letter you wish to preformat:
  3280.             
  3281.                DATAFILE  Enter the name of the primary data file which
  3282.           will be used in producing the output.  Do NOT include the
  3283.           .DBF file extension. 
  3284.  
  3285.                SORTINDX  If you want the output sorted in a particular
  3286.           order, then you may specify the sort index by entering the
  3287.           name of index file.  Do NOT enter the file extension.  If this
  3288.           field is left blank, the output will be produced in the actual
  3289.           order of the records in the primary data base.  
  3290.  
  3291.                RPTLBLFRM  Enter either R, L, or F to tell WAMPUM
  3292.           whether the output will be a report (.FRM file), label (.LBL
  3293.           file), or form letter (.DBF file).  For FoxBASE+ versions, you
  3294.           also may include an ampersand (&) to execute a program
  3295.           (.PRG or .FOX file).
  3296.  
  3297.                OUTFILE  Enter the name of the actual report form, label
  3298.           format, or form letter file.  Do NOT include the file
  3299.           extension.  You also may enter a program name in FoxBASE+
  3300.           versions.
  3301.  
  3302.                FONT  Enter a number between 0 and 9 to identify which
  3303.           font will be used in generating the output.  See the section
  3304.           on Printer Configurations for more information. 
  3305.  
  3306.                CRITERIA  Enter the selection criteria just as they
  3307.           would be entered in the Select Utilities option previously
  3308.           discussed.  Note that there is one enhancement.  If there is a
  3309.           particular range of dates you want to prompt for at execution
  3310.           time, then you can specify the field to which the date range
  3311.           will apply by surrounding that field with //'s.  
  3312.  
  3313.                For example, suppose you were generating a report which
  3314.           would show new job applications received for a certain period
  3315.           of time.  If the field name storing the application date was
  3316.  
  3317.                                                       55
  3318.  
  3319.  
  3320.           APPLICDT, then the following syntax in the criteria would
  3321.           allow the user to enter a date range at run time for the
  3322.           application date: //APPLICDT//.
  3323.            
  3324.                DESCRIP  Enter a brief description for the output you
  3325.           just designed.  This is what will appear on the menu when the
  3326.           user selects WAMPUM Preformatted Output. 
  3327.  
  3328.                RELFILE1  Enter the file name of the file to be related
  3329.           to the primary data base when the output is run.  See the
  3330.           section on Z - Zoom/Relate File for more information. 
  3331.  
  3332.                RELINDX1  Enter the file name of the index to be used
  3333.           in relating the secondary file to a field in the primary file. 
  3334.           See Z - Zoom/Relate File for more information. 
  3335.  
  3336.                Once all of the above entries have been made, a new
  3337.           record is stored in the WAMPUM.DBF file.  When you have
  3338.           added all of the entries desired.  Exit from  WAMPUM by
  3339.           pressing <ESC> from the Main System Menu.  Then restart
  3340.           WAMPUM and select the W - WAMPUM PreFormat option to
  3341.           try out your new output.
  3342.  
  3343.  
  3344.             2.1.16  Resetting the Developer Password
  3345.             
  3346.                WAMPUM provides the capability to reset the developer
  3347.           password from VOODOO to some other password of your
  3348.           choice. This is done using the DOS ENVIRONMENT and the
  3349.           SET command.  To reset the password, you should insert a
  3350.           line such as what appears below in the AUTOEXEC.BAT file in
  3351.           the root directory of the hard disk which will be used to boot
  3352.           the system.
  3353.             
  3354.                          SET WAMPUM=MOVOODOO
  3355.  
  3356.                The value of the WAMPUM environment variable
  3357.           beginning with the THIRD character becomes the new
  3358.           developer password when the system is restarted.  In the case
  3359.           outlined above, the password still would be VOODOO since the
  3360.           first and second characters are ignored.
  3361.             
  3362.                Note that this is anything but a secure system.  What it
  3363.           will do is keep the casual or novice user from entering
  3364.           WAMPUM in developer mode accidentally.
  3365.  
  3366.  
  3367.  
  3368.             2.1.17  Network Considerations
  3369.  
  3370.                Multi-user data base access via NETBIOS-compatible
  3371.           networks adds a whole new dimension to WAMPUM applications.
  3372.  
  3373.                                                       56
  3374.  
  3375.  
  3376.           Considerations such as security, passwords, audit trails, record
  3377.           and file locking are but a few of the new worries you will
  3378.           face. 
  3379.  
  3380.                The best advice for those just getting started with
  3381.           networks is START SMALL!  A few users sharing a simple data
  3382.           base is the best way to get a feel for networks.  WAMPUM
  3383.           provides a margin of security and reliable record and file
  3384.           locking.  Because of the nature of DOS and the computers
  3385.           which run under DOS, WAMPUM is NOT and CANNOT take the
  3386.           place of the mainframe at your local department store.
  3387.  
  3388.                For many network applications, you may not need
  3389.           WAMPUM to impose password security.  If you don't need it,
  3390.           DON'T use it.  The hard disk documentation details the process
  3391.           for creating user id's. 
  3392.  
  3393.             2.1.18  Making a Backup of the User Application 
  3394.  
  3395.                Once you have completed building a new application in
  3396.           its own subdirectory, this then can be saved using the BACKUP
  3397.           command for subsequent use by end-users.  When the
  3398.           application is completed, simply type the following command
  3399.           substituting the name of the subdirectory in which you built
  3400.           the application for the word SUBDIR below.  If you are using
  3401.           a drive other than Drive C, you would want to change the C:
  3402.           as well. 
  3403.  
  3404.                          BACKUP  C:\SUBDIR\*.*  A:
  3405.             
  3406.                This will make a backup copy of the application on a
  3407.           formatted floppy in Drive A.
  3408.             
  3409.                The end user then can take this floppy and restore it to
  3410.           the system on which it will be run with the command: 
  3411.  
  3412.                          RESTORE  A:  C:\*.*  /S
  3413.             
  3414.                The DOS Restore command automatically will construct
  3415.           the new subdirectory on their disk and then copy the appli-
  3416.           cation without any user knowledge of file copying. 
  3417.  
  3418.             2.1.19  Writing the Documentation
  3419.             
  3420.                Perhaps the most important step in building a new
  3421.           application is to write some documentation explaining what the
  3422.           system does and how to use it.  Don't distribute new
  3423.           applications without documentation!  It gives WAMPUM and
  3424.           yourself a bad name.
  3425.  
  3426.  
  3427.             
  3428.  
  3429.                                                       57
  3430.  
  3431.  
  3432.               2.2 ! - RUNning an External Program
  3433.  
  3434.                Assuming you have sufficient memory and except in the
  3435.           FoxBASE+ versions, external programs can be run from within
  3436.           WAMPUM using the ! - Run External Program option on the
  3437.           Main System Menu.  The following programs can be run:
  3438.           executable programs in either .EXE or .COM format and DOS
  3439.           batch files with .BAT file extension.  In addition, you can
  3440.           enter any DOS command and execute it with this option. You
  3441.           also can exit to the DOS level temporarily by entering
  3442.           \COMMAND.COM as the file name to run.  Note, this may only
  3443.           work with DOS 3.0 and above. 
  3444.  
  3445.                Similarly, directory paths may precede program names
  3446.           with DOS 3.0 or above.  Any program within the DOS PATH
  3447.           may be run without specifying the directory path.
  3448.  
  3449.             
  3450.             2.3  & - Run FoxBASE+ Commands/Programs
  3451.  
  3452.                In FoxBASE+ versions, a "simulated dot prompt" replaces
  3453.           the ! - Run External Program option.  You still may run any
  3454.           external program by preceding the DOS command or program
  3455.           name with an exclamation point (!).
  3456.  
  3457.                This option also permits you to execute virtually any
  3458.           dBASE III Plus-compatible command or function.  Consult any
  3459.           of the 400+ page reference books in your friendly bookstore
  3460.           or library for a summary of these commands and what they do. 
  3461.           You also may run simple, unnested programs up to
  3462.           approximately 500 lines in length depending upon the amount
  3463.           of free memory in your computer.  If you also own a FoxBASE+
  3464.           compiler, compiled programs also can be executed from within
  3465.           this option.  As a reference on programming in FoxBASE+, you
  3466.           may wish to obtain George Goley's Dynamics of FoxBASE+
  3467.           Programming, published by Dow Jones-Irwin. This book assumes
  3468.           you already know virtually all dBASE commands and functions.
  3469.  
  3470.  
  3471.             
  3472.             2.4 Z - ZOOMing or RELATing a Supplemental File 
  3473.  
  3474.                WAMPUM provides the capability to link a secondary file
  3475.           for purposes of report, label, and form letter output.  This
  3476.           can be done automatically within the WAMPUM Preformatted
  3477.           Output option, or it can be done manually using the Z -
  3478.           Zoom/Relate File option. 
  3479.  
  3480.                There are many instances in which it is helpful to have
  3481.           a secondary file to provide "table lookup" of data which
  3482.           otherwise would have to be retyped in each record of a data
  3483.           base.  For example, if each customer has an ACCOUNT
  3484.  
  3485.                                                       58
  3486.  
  3487.  
  3488.           NUMBER, it would be silly to build an orders file which
  3489.           required the entry of the customer's name, address, and phone
  3490.           number every time an order was placed.  Instead, the orders
  3491.           file could contain the customer number, and a secondary file
  3492.           could be used to "look up" the customer's name, address, and
  3493.           phone number whenever a report, label, or form letter was
  3494.           produced.
  3495.             
  3496.                There are four prerequisites for relating a secondary file
  3497.           with WAMPUM.  
  3498.  
  3499.                (1)  There must be an IDENTICAL field in both the main
  3500.                data base and the related file; 
  3501.  
  3502.                (2) the key field in the related file must be indexed on
  3503.                that key; 
  3504.  
  3505.                (3) the index file name must be identical to the name of
  3506.                the key field; and 
  3507.  
  3508.                (4) both the related file and its index must either be in
  3509.                the default directory or must be accessible via the DOS
  3510.                PATH. 
  3511.  
  3512.                To link a secondary file, pick the Z - Zoom/Relate File
  3513.           option on the Main System menu.  Then enter the name of the
  3514.           secondary file and the index.  When the Main System Menu
  3515.           reappears, the last line of the screen will show a relation is in
  3516.           effect with the following expression:
  3517.             
  3518.                          FILE: ORDERS/R
  3519.             
  3520.                Fields in the related file may then be accessed within
  3521.           report and label forms as well as within form letter files
  3522.           using the following command syntax: ALIAS->FIELDNAME
  3523.           where ALIAS is the name of the related file and FIELDNAME
  3524.           is the field name to be output. 
  3525.  
  3526.                See the example below for further clarification: 
  3527.  
  3528.  
  3529.           CUSTOMER ORDER FILE                CUSTOMER FILE 
  3530.  
  3531.           (ORDERS.DBF)                       (ACCOUNTS.DBF)  
  3532.  
  3533.                ACCTNO     RELATED FIELD --->      ACCTNO (indexed)
  3534.                ORDERDT                            CUSTNAME 
  3535.                ITEMS                              ADDRESS 
  3536.                                                   PHONE
  3537.  
  3538.                As a FIELD CONTENTS entry in the report form, you
  3539.           could then specify ACCOUNTS->CUSTNAME once the
  3540.  
  3541.                                                       59
  3542.  
  3543.  
  3544.           ACCOUNTS file was related using the ACCTNO index.  This
  3545.           would tell WAMPUM to output the actual customer name rather
  3546.           than the account number found in the orders file.
  3547.  
  3548.  
  3549.             2.5 G - Global Replacement of Data 
  3550.             
  3551.                There are occasions in which it is desirable to replace
  3552.           different pieces of data in a file for a large number of
  3553.           records in one pass rather than calling up each record
  3554.           individually.  
  3555.  
  3556.                Be aware that the potential for disaster goes up
  3557.           dramatically any time you are replacing data simultaneously
  3558.           for more than one record!  If you are new to WAMPUM and
  3559.           particularly to the power of dBASE III's REPLACE command,
  3560.           stay away from this option! This feature has been added to
  3561.           WAMPUM against my better judgment because of the pleas of
  3562.           many experienced dBASE users.  If you do not need the
  3563.           temptation of this option, delete item 18 from the Menu # list
  3564.           when you configure new WAMPUM applications! 
  3565.  
  3566.                G - Global Replace is a function closely akin to global
  3567.           search and replace on many word processing systems.  It
  3568.           involves two steps:
  3569.  
  3570.                (1) selecting a group of records to be processed and 
  3571.  
  3572.                (2) revising one or more fields of data in the records
  3573.                which meet the selection criteria.
  3574.             
  3575.                If you already have entered Selection Criteria, then
  3576.           executing G - Global Replace always works with the group of
  3577.           records meeting those search criteria.  You must have already
  3578.           entered Selection Criteria before selecting G - Global Replace. 
  3579.  
  3580.                You are well advised to run a list using the Select
  3581.           Criteria you have in mind for Global Replace to make sure the
  3582.           correct records have been selected.  Once Global Replace has
  3583.           been executed, it's too late to get them back!  See the Select
  3584.           Utilities section of the User's Guide for more details.
  3585.             
  3586.                Once record selection criteria are in effect, G - Global
  3587.           Replace will display the Global Replace Screen which permits
  3588.           you to specify up to 10 different fields which can be updated
  3589.           in one pass through the data base.  For each field, you
  3590.           specify two pieces of information: 
  3591.  
  3592.                (1) the field name and 
  3593.  
  3594.                (2) the dBASE field expression to be executed against
  3595.                that piece of data. 
  3596.  
  3597.                                                       60
  3598.  
  3599.  
  3600.  
  3601.                In its simplest form, you may wish to replace all DUE
  3602.           DATES with a new value 30 days later.
  3603.  
  3604.                Assuming you already have selected the range of records
  3605.           to be changed, the correct procedure would be to use the <Up>
  3606.           or <Down> arrow to first find the DUEDT field.  Once
  3607.           displayed, press <ENTER>.  When prompted for the field
  3608.           expression, enter the following:  DUEDT+30.  Then press
  3609.           <ENTER>.  If there is another field to be replaced, you would
  3610.           leave the LINK variable in the AND position and press
  3611.           <ENTER>.  
  3612.  
  3613.                A second line would permit you to repeat the above
  3614.           process for another piece of information.  When finished,
  3615.           simply press <PgDn> while the cursor is in the LINK field and
  3616.           the global search and replace will proceed.  If you have made
  3617.           a mistake, press <ESC> to exit without executing the global
  3618.           replace! 
  3619.  
  3620.                Another couple of examples may help.  If a group of last
  3621.           names had been entered in upper and lower case and you
  3622.           wanted to convert them to ALL upper case, you would first
  3623.           specify the group of records to be processed using SELECT
  3624.           ASSIST.  When the Global Replace Screen appears, find the
  3625.           LASTNAME field and press <ENTER>. For the field expression,
  3626.           UPPER(Lastname) should be entered. Then press the <ENTER>
  3627.           and <PgDn> to proceed.    
  3628.  
  3629.                REMEMBER:  Always RUN A LIST against your existing
  3630.           SELECTION CRITERIA to make certain that only the desired
  3631.           records will be REPLACED before executing G - Global
  3632.           Replace.  If you're new to WAMPUM and data base
  3633.           management, make a full backup of your data base application
  3634.           before using this option! 
  3635.             
  3636.  
  3637.            
  3638.             2.6 C - Copy Utilities for Importing & Exporting Data 
  3639.  
  3640.                WAMPUM's C - Copy Utilities option provides a rich
  3641.           variety of file importing and exporting tools permitting
  3642.           standard dBASE data bases to be transferred into or out of
  3643.           virtually any of the common file formats.  In addition, a data
  3644.           base structure file can be created which permits simple
  3645.           revision of a data base structure where additional fields
  3646.           become desirable after an application has been built. With the
  3647.           exception of the dBASE III structure and audit trail options,
  3648.           you can narrow down which records will be copied by first
  3649.           specifying selection criteria using the S - Select Utilities
  3650.           option. 
  3651.             
  3652.  
  3653.                                                       61
  3654.  
  3655.  
  3656.                When the C - Copy Utilities option is selected, you
  3657.           initially are prompted for three pieces of information:  
  3658.  
  3659.                (1) whether you will be COPYing data TO or FROM
  3660.                another file from the file currently in use; 
  3661.  
  3662.                (2) the file type of the other file; and 
  3663.  
  3664.                (3) the file name of the other file.
  3665.  
  3666.  
  3667.  
  3668.                               Copying TO Another File
  3669.  
  3670.                Copying TO Another File requires that the first prompt
  3671.           be answered with a T.  Then a file type is specified. And then
  3672.           the file name of the receiving file is specified.
  3673.  
  3674.                If you specify a dBASE III type data base file as the
  3675.           receiving file, then one will be created if the file name
  3676.           specified does not already exist.  If it exists, you will be
  3677.           asked whether to Quit, Overwrite, or Append to the existing
  3678.           external file.
  3679.             
  3680.                If you specify COPY TO a dBASE III Structure, WAMPUM
  3681.           will copy the structure of the current data base into a new
  3682.           .DBF file with four fields: Field_Name, Field_Type, Field_Len,
  3683.           and Field_Dec.  Each record entry in the new file will match a
  3684.           field in the structure of the current data base.  This file then
  3685.           can be added to, edited, and records can be deleted.  Once
  3686.           revised, this file then can be used as the new file structure
  3687.           template for transferring the current data base into a new file
  3688.           structure.  This is covered in detail below.
  3689.             
  3690.                If you COPY TO a Standard Data Format file, WAMPUM
  3691.           will create a new flat file consisting of all the selected data in
  3692.           the current data base in ASCII format.  Each record will
  3693.           occupy one line in the new file with a carriage return/line
  3694.           feed at the end of each line or record.
  3695.             
  3696.                COPYing TO a Delimited Format file permits the user to
  3697.           identify what character should be used to surround each
  3698.           character field in the new data base.  For example, BASIC
  3699.           expects character fields in a sequential file to be delimited
  3700.           with QUOTES. 
  3701.  
  3702.                COPYing TO an Audit Trail file is never permissible.  
  3703.  
  3704.                COPYing TO an Empty dBASE III file makes a duplicate
  3705.           empty data base file with the same file structure as the
  3706.           current file in use.
  3707.  
  3708.  
  3709.                                                       62
  3710.  
  3711.  
  3712.  
  3713.  
  3714.                          Copying FROM Another File
  3715.             
  3716.                Copying From Another File means that you will be
  3717.           IMPORTING data from another file INTO the data base file
  3718.           currently in use.  The only exception is the dBASE III
  3719.           Structure option covered below.  To COPY FROM another file,
  3720.           enter F at the To/From prompt.
  3721.  
  3722.                If you COPY FROM another dBASE III data base, then the
  3723.           information in ALL records in that data base will be appended
  3724.           to the data already in the current data base.  Only field data
  3725.           whose field names and type match exactly those of the
  3726.           current data base will be copied.  Existing records in the
  3727.           current data base will not be deleted.
  3728.             
  3729.                If you COPY FROM a Standard Data Format file, its
  3730.           records are appended to the information, if any, which already
  3731.           exists in the current data base.  Note that the current dBASE
  3732.           III file structure should be created first to match the format of
  3733.           the SDF file.  If you don't understand this, consult a good
  3734.           dBASE III Primer before attempting to use this option or the
  3735.           next one. 
  3736.  
  3737.                If you COPY FROM a Delimited file, its records are
  3738.           appended to the information, if any, which already exists in
  3739.           the current data base.  Note that the current dBASE III file
  3740.           structure should be created first to match the format of the
  3741.           delimited file. See the caveat above before attempting this.
  3742.  
  3743.  
  3744.                COPYING FROM a dBASE III Structure is one of the ways
  3745.           WAMPUM can modify the structure of the current data base
  3746.           and move the file contents to a new dBASE III file.  To modify
  3747.           a file's structure, follow the steps outlined above to create
  3748.           and revise a new dBASE III structure file.  Once completed,
  3749.           place the original dBASE III data base file back in use with F
  3750.           - File Select. Then pick the COPY FROM option and specify
  3751.           option 2, a dBASE III Structure.  Enter the name of the
  3752.           structure file as the external file.  You then will be prompted
  3753.           to enter a name for a new dBASE III data base file to be built
  3754.           using the new structure and the data from the data base file
  3755.           currently in use. Enter a name of your choice. 
  3756.                Once completed, place the new file in use and check the
  3757.           data to assure that it copied what you intended before
  3758.           deleting the old data base!  Once you are certain that it looks
  3759.           the way it should, then reindex the file following the
  3760.           instructions in the I - Index Select/Create section of this
  3761.           User's Guide.  You then may delete the original data base
  3762.           preferably after making a backup copy to a floppy. 
  3763.  
  3764.  
  3765.                                                       63
  3766.  
  3767.  
  3768.                COPYING FROM an Audit Trail file is WAMPUM's way of
  3769.           allowing posting from a transaction file.  In addition, the
  3770.           developer must have set the AUDIT TRAIL flag True for this
  3771.           application when the G - Config Update option was run. And,
  3772.           the audit flag must be set to False before posting to the
  3773.           master data base begins.  
  3774.  
  3775.                Assuming the above conditions have been met, a file will
  3776.           exist in the default directory named AUDIT.DBF.  This should
  3777.           be entered as the external file name or simply enter the drive
  3778.           designator indicating the drive location of the AUDIT files, e.g.
  3779.           C: or A: with a floppy.  For the transaction posting to work,
  3780.           the current file and lead index must match the file and lead
  3781.           index designated when the audit trail file was created. 
  3782.           Otherwise, an error message will be given indicating what the
  3783.           required file and index must be.  If no error condition is
  3784.           present, then WAMPUM will post all information in the audit
  3785.           file to the current data base and will notify the user when this
  3786.           has been completed.  Remember that the values in the lead
  3787.           index must be unique or the AUDIT file will be posted to the
  3788.           first matching key found in the index. Note also that this
  3789.           function is accessible only to users with the developer
  3790.           password.
  3791.  
  3792.  
  3793.  
  3794.             2.7 Deleting & Undeleting Groups of Records 
  3795.  
  3796.                WAMPUM provides a means of marking a group of records
  3797.           as DELETED as well as a means of restoring a group of
  3798.           records which already have been marked for deletion.  To use
  3799.           this function, you must:
  3800.  
  3801.                (1)  Start WAMPUM with the Developer Password!  
  3802.  
  3803.                (2)  Specify Record Selection Criteria, and 
  3804.  
  3805.                (3)  Assure that the primary index in use evaluates to a
  3806.                character expression.  
  3807.  
  3808.                If any of these three prerequisites is missing, WAMPUM
  3809.           ignores the attempt to delete or undelete a group of records
  3810.           just as if the function did not exist.
  3811.             
  3812.                Once the above prerequisites have been satisfied, you
  3813.           should first run a sample listing using the List File Contents
  3814.           option in the S - Select Utilities.  This will assure that you
  3815.           are working with the group of records desired. 
  3816.  
  3817.                Next, pick the function desired: either M - Mark Records
  3818.           *DEL* or U - UN*DEL* Records.  When WAMPUM prompts for
  3819.           the entry to find, type an asterisk (*) and press <ENTER>.  If
  3820.  
  3821.                                                       64
  3822.  
  3823.  
  3824.           the prerequisites in the first paragraph have been met,
  3825.           WAMPUM will ask if you really want to DELETE or RESTORE
  3826.           the selected group of records.  Type Y if you want to proceed,
  3827.           or press <ESC> to abort. 
  3828.  
  3829.                This function provides a quick way to mark a large group
  3830.           of records deleted once the same group of records has been
  3831.           archived to a different file. When the X - Rebuild / FileFix
  3832.           option is then run, the group of records is deleted
  3833.           permanently and cannot be restored with the U - UN*DEL*
  3834.           Records function. 
  3835.  
  3836.                Note that this function requires an active Record
  3837.           Selection Criteria expression to avoid the possibility of
  3838.           marking every record in a file as deleted.  If you really want
  3839.           to delete all records in a file, specify the following Record
  3840.           Selection Criteria: RECNO() >= 1. This means all records.
  3841.  
  3842.             
  3843.             2.8 Reserved Variables, FoxBASE & Clipper Functions
  3844.  
  3845.             2.8.1  Overview
  3846.             
  3847.                In addition to a number of reserved functions provided in
  3848.           the standard implementation of the dBASE III programming
  3849.           language, WAMPUM adds all Clipper enhancements (except in
  3850.           the FoxBASE+ versions) plus some new functions of its own. 
  3851.           This section is designed to bring you up to speed on these new
  3852.           functions and some of the major dBASE III commands and
  3853.           functions.  It is by no means an exhaustive treatment of all
  3854.           dBASE III Plus functions.  Consult any of the dBASE III
  3855.           reference books in your local bookstore for more information
  3856.           on dBASE III commands and functions.
  3857.  
  3858.             
  3859.  
  3860.             
  3861.             2.8.2  CHARACTER/STRING functions
  3862.             
  3863.                Character string manipulation becomes critical in
  3864.           producing meaningful reports and form letters.  WAMPUM
  3865.           provides a rich assortment of functions to assist the
  3866.           developer.  As is true of all functions, each contains a
  3867.           keyword followed by parentheses,  one or more arguments
  3868.           separated by commas, and closing parentheses.
  3869.  
  3870.                AT(exp1,exp2) allows a search of the second string
  3871.           expression for the first occurrence of the first expression. A
  3872.           numeric value is returned for the character position of the
  3873.           first match.  For example, AT("son","Thompson") would return
  3874.           6. If no match was found, a 0 would be returned.
  3875.             
  3876.  
  3877.                                                       65
  3878.  
  3879.  
  3880.                CHR(n) returns an ASCII character represented by ASCII
  3881.           code n.  For example, CHR(27) is the escape code. 
  3882.  
  3883.                SPACE(n) allows the generation of n spaces where n is a
  3884.           numeric value.  For example SPACE(5) produces 5 spaces.
  3885.  
  3886.                STR(exp1,n,dec) converts a numeric expression (exp1)into
  3887.           a string expression n characters long with dec decimals.  For
  3888.           example, STR(153.123,5,1) would yield "153.1". 
  3889.  
  3890.                SUBSTR(exp1,n,len) permits extraction of a portion of a
  3891.           string from a larger string. n is a numeric specifying the
  3892.           starting position in the exp1 string. len is a numeric
  3893.           specifying the number of characters to extract from the
  3894.           starting position. For example, SUBSTR("Thompson",3,2) would
  3895.           return "om" which is 2 characters beginning at character
  3896.           position 3. 
  3897.  
  3898.                TRIM(exp1) tells WAMPUM to trim off trailing spaces
  3899.           from a character string.  For example, if a 30 character NAME
  3900.           field contained "John Jones     " then TRIM(NAME) would
  3901.           yield "John Jones" with no trailing spaces. 
  3902.  
  3903.                UPPER(exp1) converts a string expression to all
  3904.           UPPERCASE.  LOWER(exp1) does just the opposite. 
  3905.  
  3906.                VAL(exp1) returns a numeric value for the exp1 string. 
  3907.           For example, VAL("02345") would return the integer 2345. 
  3908.             
  3909.  
  3910.             2.8.3  DATE functions
  3911.             
  3912.                WAMPUM supports the dBASE III function for today's
  3913.           date which is DATE() as well as the reserved word TODAY
  3914.           which also is today's date in date format.
  3915.             
  3916.                DTOC(DATE()) would convert today's date to a character
  3917.           string in the format 06/12/86. 
  3918.  
  3919.                The converse also works to convert a string to a date:
  3920.           CTOD("06/12/86") would convert the string to a date variable. 
  3921.                Several DAY functions are available including:
  3922.  
  3923.                CDOW() which outputs the actual day of the week such as
  3924.           Monday; 
  3925.                DAY() which produces a numeric representing the day of
  3926.           the month such as 31; 
  3927.  
  3928.                DOW() which produces a numeric representing the day of
  3929.           the week such as 5.  Note that an empty date field always
  3930.           produces DOW equal to 0.  This is a good way to test for
  3931.           blank dates. 
  3932.  
  3933.                                                       66
  3934.  
  3935.  
  3936.  
  3937.                Several MONTH functions also are available:
  3938.  
  3939.                MONTH() outputs a numeric representing the month of the
  3940.           year such as 2; 
  3941.  
  3942.                CMONTH() generates the actual name of the month such
  3943.           as February; 
  3944.  
  3945.                YEAR() outputs a 4-digit numeric value representing the
  3946.           year such as 1987. 
  3947.  
  3948.                Clipper provides a date-to-string conversion function
  3949.           with the DTOS() command.  The syntax is DTOS(FILINGDT). 
  3950.           Assuming a filing date of 10/10/85, DTOS(FILINGDT) would
  3951.           output the string  "19851010".  This function is particularly
  3952.           helpful in building indexes where a date field is converted to a
  3953.           string, but a developer wishes to preserve proper ordering of
  3954.           dates. DTOC(FILINGDT,1) is the FoxBASE+ equivalent.
  3955.  
  3956.                In producing reports and labels, you can reformat a date
  3957.           field into a standard date character string using the WAMPUM
  3958.           function FULLDATE().  FullDate(FilingDt) is the syntax
  3959.           assuming that filing date was a date field in your data base.
  3960.           If the date were 10/20/85, FULLDATE(FILINGDT) would output
  3961.           October 20, 1985. 
  3962.  
  3963.                In some applications, it may be desirable to roll a date
  3964.           over to Monday if it hits on a weekend.  WAMPUM's
  3965.           WEEKDAY() function does this.  Assuming a filing date of
  3966.           06/14/86 hits on a Saturday, WEEKDAY(FILINGDT) would return
  3967.           a date expression with a value of 06/16/86 which is the
  3968.           following Monday. Note that this function could be combined
  3969.           with a previous one to produce a standard text date:
  3970.           FULLDATE(WEEKDAY(FILINGDT)). 
  3971.             
  3972.             
  3973.             2.8.4  DUPKEY("FIELDNAME") 
  3974.  
  3975.                When building the EDIT.DBF edit checks, many appli-
  3976.           cations require the ability to test whether the key field of
  3977.           the record being added to a data base already exists and, if
  3978.           so, to return an error. This is critical if you will be using the
  3979.           AUDIT TRAIL function. The DUPKEY() function provides this
  3980.           capability.  In order to use it, the following conditions must be
  3981.           met:
  3982.  
  3983.                (1)  The key field to be checked must be indexed; 
  3984.  
  3985.                (2)  That index must be the primary (first) index in use
  3986.                when the file is ADDed to or EDITed;
  3987.  
  3988.  
  3989.                                                       67
  3990.  
  3991.  
  3992.                (3)  The name of the key field must be specified in
  3993.                parentheses and quotation marks as an edit check in the
  3994.                EDIT.DBF file.  The syntax is shown in the following
  3995.                example using PARTNO as the name of the indexed key
  3996.                field which is to be checked:  DUPKEY("PARTNO")
  3997.  
  3998.  
  3999.  
  4000.             2.8.5  EMPTY(fieldname) tests for empty fields 
  4001.  
  4002.                EMPTY(FieldName) returns a logical True if a character,
  4003.           memo, or date field is empty, or if a numeric field is 0, or if a
  4004.           logical field is False.  Otherwise, a logical False is returned.
  4005.           This function does not work reliably in FoxBASE+.
  4006.  
  4007.  
  4008.  
  4009.             2.8.6  LASTTIME field in data bases
  4010.             
  4011.                If LASTTIME is included as a Character-type field in any
  4012.           data base, WAMPUM will automatically post the current time to
  4013.           this field whenever a record is ADDed or EDITed in that data
  4014.           base.  This provides a convenient method of determining when
  4015.           records were last updated with no user control over the field
  4016.           contents.
  4017.  
  4018.  
  4019.             2.8.7  LASTUPDT field in data bases
  4020.             
  4021.                If LASTUPDT is included as a Date-type field in any data
  4022.           base, WAMPUM will automatically post the current date to this
  4023.           field whenever a record is ADDed or EDITed in that data base.
  4024.           As with LASTTIME, there is no user control over this field's
  4025.           contents. 
  4026.  
  4027.             
  4028.             2.8.8  LASTUSER field in data bases
  4029.             
  4030.                If LASTUSER is included as a Character-type field in any
  4031.           data base, WAMPUM will automatically post the current
  4032.           USERID to this field whenever a record is ADDed or EDITed in
  4033.           that data base if the SET USERID=X line has been added to
  4034.           the AUTOEXEC.BAT file for each network user.  
  4035.  
  4036.                This provides a convenient method of determining who
  4037.           fouled up what with no user control over the field contents. 
  4038.           Please note that before using the SET USERID=X command, you
  4039.           must first create a USERS data base and index with the names
  4040.           and passwords of those authorized access. 
  4041.  
  4042.  
  4043.  
  4044.  
  4045.                                                       68
  4046.  
  4047.  
  4048.             2.9 PATH Considerations 
  4049.             
  4050.                Whenever WAMPUM is started, part of its initialization
  4051.           process includes reading the DOS PATH which then becomes
  4052.           WAMPUM's PATH as well.  For this reason, developers need to
  4053.           be careful NOT to build WAMPUM applications in a directory
  4054.           which is part of the DOS PATH since all of the files in this
  4055.           directory then would be accessed by other WAMPUM
  4056.           applications.  
  4057.  
  4058.                The only exception to this guideline might be in
  4059.           situations in which a related file and its index need to be
  4060.           shared with several different applications.  In this case, just
  4061.           the related file and index should be placed in a directory
  4062.           supported by the DOS PATH command, NOT the configuration
  4063.           files for the WAMPUM application itself.  If you don't
  4064.           understand this exception, don't use it.
  4065.  
  4066.  
  4067.            
  4068.             2.10 Enabling USERID's and Passwords
  4069.             
  4070.                WAMPUM now may be configured to require those
  4071.           accessing files through WAMPUM to log in with a USERID
  4072.           and PASSWORD.  Typically this would be used for network
  4073.           applications if the network itself does not provide adequate
  4074.           protection. The USERID-PASSWORD system also may be
  4075.           invoked in single-user applications.  
  4076.  
  4077.                Step 1 to force use of the USERID-PASSWORD system is
  4078.           to create a data base which will store the user names and
  4079.           passwords of those authorized to utilize WAMPUM.  Create a
  4080.           new subdirectory on your hard disk and run WAMPUM in
  4081.           Developer Mode.  Then Build A New File and name it USERS. 
  4082.  
  4083.                Two fields must be created in this file structure. Two
  4084.           additional fields are optional.  The two mandatory fields are
  4085.           USER and PASSWORD.  Both fields must be Character-type
  4086.           fields with a field length of 8. The optional fields are
  4087.           SUPERVISOR, which must be a Logical field of length 1, and
  4088.           CONFIG, which must be a character field of length 7. 
  4089.  
  4090.                Once you have built the new data base, use F - File
  4091.           Select to place the USERS file in use.  Then use I - Index
  4092.           Select/Create to build an index on the USER field.  You then
  4093.           are ready to ADD records to the data base for each
  4094.           anticipated user.  
  4095.  
  4096.                For each user, you must include a user name and
  4097.           password.  These entries ALL must be in UPPER case letters! 
  4098.           Once you have added all the entries desired, exit to the DOS
  4099.           level and copy USERS.DBF and USER.NTX into a directory
  4100.  
  4101.                                                       69
  4102.  
  4103.  
  4104.           which is part of the DOS path.  This will enable WAMPUM to
  4105.           find the files whenever an attempt is made to run WAMPUM. 
  4106.           Assuming your \DOS subdirectory is part of the path, a simple
  4107.           command to copy the files would be as follows: 
  4108.  
  4109.                            COPY   USER*.*   \DOS
  4110.             
  4111.                Whenever you wish to add new users, move to the
  4112.           directory in which you established the original copy of the
  4113.           file (NOT the directory which is part of the DOS PATH!). 
  4114.           Add whatever new entries are desired, and then copy the files
  4115.           again to the same directory sharing the DOS PATH which was
  4116.           used previously. 
  4117.  
  4118.                If you accidentally get tangled up to the point that you
  4119.           can no longer get into WAMPUM, turn OFF the password
  4120.           feature by disabling the USERID variable in the environment. 
  4121.           To do this, exit to DOS and type the following command at
  4122.           the DOS prompt:  SET USERID=
  4123.             
  4124.                If the SUPERVISOR field is used and is marked True for
  4125.           a given user, then WAMPUM automatically will be started in
  4126.           Developer mode for that user.  This means that all 21 menu
  4127.           options will be available to this user.
  4128.  
  4129.                If the CONFIG field is used, then the developer may
  4130.           specify a configuration file for use by each user.  This
  4131.           configuration file takes the place of WAMPUM.MEM which will
  4132.           be used unless the CONFIG field is used and has an entry. The
  4133.           process for generating these individual configurations is quite
  4134.           simple.  Create a new WAMPUM configuration as you normally
  4135.           would using the * - Config Update option. Then exit to DOS
  4136.           and copy WAMPUM.MEM which was created to a new filename
  4137.           matching the CONFIG field value. Make certain that the file
  4138.           extension remains .MEM.  Then edit the USERS data base and
  4139.           add an appropriate CONFIG file name for the users desired.
  4140.  
  4141.                For example, let's assume there is a USER named Jones. 
  4142.           We want that user's CONFIG file to be named JONES.MEM. 
  4143.           Run WAMPUM in Developer Mode and configure the
  4144.           application in the normal manner. Now exit to DOS and type:
  4145.  
  4146.                      COPY WAMPUM.MEM JONES.MEM
  4147.  
  4148.                Revise Jones' entry in the USERS data base to reflect a
  4149.           CONFIG field value of JONES.  
  4150.             
  4151.  
  4152.             2.11  WAMPUM & DOS System Errors
  4153.             
  4154.                WAMPUM System Errors are error conditions caused by
  4155.           one of three conditions: 
  4156.  
  4157.                                                       70
  4158.  
  4159.  
  4160.  
  4161.                (1) a DOS-error is detected, 
  4162.  
  4163.                (2) a Clipper or FoxBASE+ error is detected, or 
  4164.  
  4165.                (3) the abort key (ALT-C) in Clipper versions is pressed
  4166.                by the user.
  4167.  
  4168.                In any of these three situations, a system error message
  4169.           appears on the top line of the screen followed by a prompt
  4170.           telling you how to proceed. What follows is a brief description
  4171.           of what to do in each of these error situations. 
  4172.  
  4173.                DOS errors typically are caused by a hardware failure
  4174.           such as a bad hard disk, a missing floppy disk in Drive A, or
  4175.           an out of memory condition.  With any DOS error, you should
  4176.           always terminate the program if given the option to do so. 
  4177.           This will gracefully close all open data bases and indexes and
  4178.           assure that no permanent damage is done to your data. 
  4179.  
  4180.                Clipper or FoxBASE+ errors typically occur when
  4181.           WAMPUM encounters an illegal dBASE expression in a report
  4182.           or label form, in macro expressions or edit checks, or in a
  4183.           record selection specification.  
  4184.  
  4185.                For example, if you entered LASTNAME=Jones as a record
  4186.           selection criteria without surrounding Jones in quotes, a
  4187.           system error would occur whenever you executed a report,
  4188.           label, form letter, or listing of the file. 
  4189.  
  4190.                Unfortunately, the current version of the Clipper
  4191.           compiler, with which WAMPUM was produced, provides no
  4192.           means for WAMPUM to test such expressions for validity
  4193.           before executing them.  The FoxBASE+ versions of WAMPUM
  4194.           will catch these errors.  However, once Clipper attempts to
  4195.           execute an invalid expression, a system error occurs. You
  4196.           typically will be returned to the Main System Menu when these
  4197.           errors occur. You then can revise the offending code and try
  4198.           again. In the case of invalid expressions, you usually can opt
  4199.           to ignore these error so long as you understand that the
  4200.           results of any output may be erroneous. 
  4201.  
  4202.                There may be occasions when you want to cancel some
  4203.           WAMPUM session usually because a report listing is not
  4204.           producing the results desired and you do not want to waste
  4205.           100 sheets of paper.  Press <ESC>ape and the output will be
  4206.           terminated when the next qualifying record is reached. Do NOT
  4207.           press CTRL-ALT-DEL to terminate WAMPUM. This may
  4208.           permanently damage any data bases in use at the time.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.                                                       71
  4214.  
  4215.  
  4216.             3  End-User Functions
  4217.             
  4218.             3.1 Overview
  4219.             
  4220.                The developer's section explained the step-by-step
  4221.           process for building a new application.  This section is
  4222.           designed to acquaint the end-user with information necessary
  4223.           to build and maintain an existing data base application as well
  4224.           as how to extract information from an existing file.
  4225.             
  4226.                End-users typically want to do two things with a data
  4227.           base. They want to add or change information in an existing
  4228.           file (INPUT functions), and they want to extract information
  4229.           from an existing file (OUTPUT functions).
  4230.             
  4231.                In WAMPUM, INPUT consists of ADDing new records,
  4232.           EDITing existing records, and DELETing or UNDELETing
  4233.           existing records. For network applications, only one person can
  4234.           edit any individual record at any given time.  Multiple people
  4235.           may be adding new records at the same time.  And multiple
  4236.           people may be editing different existing records. 
  4237.  
  4238.                In WAMPUM, OUTPUT means you just want to look at or
  4239.           print something which already exists in the file.  For network
  4240.           users, multiple people can be outputting information from the
  4241.           same file simultaneously.  ALL output falls into one of two
  4242.           categories: single record or multiple record output.
  4243.  
  4244.                Single record OUTPUT is quick because it typically
  4245.           involves retrieval of a single record by an indexed key.  This
  4246.           output may consist of either DISPLAYing an individual record
  4247.           or PRINTing an individual record.  In either case, the end-user
  4248.           is prompted for the key of the record to find, and WAMPUM
  4249.           will find it in less than a second even with extremely large
  4250.           data bases.  The record is displayed or printed in its entirety
  4251.           just as the information is stored. 
  4252.             
  4253.                Multiple record OUTPUT tends to be slower but more
  4254.           useful.  It is slower because WAMPUM must make a complete
  4255.           pass through the data base to find the records desired for
  4256.           output.  It tends to be more useful because the output
  4257.           typically is formatted in such a way that the extracted data is
  4258.           more meaningful.  Multiple record output ALWAYS involves
  4259.           three steps: (1) picking the lead index to specify the order in
  4260.           which the records will appear in the output, e.g. alphabetically,
  4261.           by date, or by part number; (2) selecting (i.e. narrowing down)
  4262.           the group of records which should be output using Boolean
  4263.           logic, e.g. find all the new accounts for January or just the
  4264.           new accounts with sales over $1,000,000; and (3) choosing the
  4265.           type of output desired: a list, report, mailing labels, or a form
  4266.           letter. Billing statements, an overdue notice, or monthly
  4267.  
  4268.  
  4269.                                                       72
  4270.  
  4271.  
  4272.           summary of accounts all are examples of multiple record output
  4273.           which easily can be produced using WAMPUM. 
  4274.  
  4275.                You must master the above concepts before use of any
  4276.           data base management system can be of much value.  If you
  4277.           don't understand the relationship between input and output and
  4278.           the various types of output, put this User's Guide aside and try
  4279.           reading this section again tomorrow.
  4280.             
  4281.  
  4282.             3.2 A - ADDing New Records
  4283.             
  4284.                To add new records to any data base, that file must first
  4285.           be selected.  Look at the bottom of the WAMPUM Main Menu
  4286.           to make sure that the file you want to use is already selected. 
  4287.           If not, it can be selected using the F - File Select option in
  4288.           developer mode only, i.e. password required.
  4289.             
  4290.                If the file you wish to work with is selected, then you
  4291.           should also consider whether there are indexes which you want
  4292.           automatically updated as you ADD new records to the file.  If
  4293.           so, then these, too, must be selected before you ADD new
  4294.           records.  You can determine which indexes are in use by
  4295.           looking at the bottom of the Main System Menu screen.  New
  4296.           indexes can be created and/or opened using the I - Index
  4297.           Sel/Create option in developer mode only.
  4298.  
  4299.                Once you are working with the correct file and indexes,
  4300.           then ADDing records is as simple as highlighting the A - Add
  4301.           a New Record option and pressing <ENTER>. Or you may simply
  4302.           type an A while the Main System Menu is displayed.
  4303.             
  4304.                The screen will clear and WAMPUM will display a data
  4305.           entry screen with all of the fields in the current file.  It will
  4306.           indicate the proposed new record number of this entry at the
  4307.           top of the form. Type in the data you wish to enter for each
  4308.           field using the UP and DOWN cursor keys to move from field
  4309.           to field.
  4310.  
  4311.                If a file has a substantial number of fields, then all of
  4312.           the fields may not fit on one data entry screen.  In this case,
  4313.           the word *MORE* will appear in the bottom right corner of
  4314.           the screen.  When you complete entry of data on the first
  4315.           screen, then a second screen with the remaining fields will
  4316.           appear. 
  4317.  
  4318.                Saving a new entry to the file can be accomplished in
  4319.           several ways.  
  4320.  
  4321.                (1) Pressing <ENTER> while the cursor is positioned in
  4322.                the last field of the last data entry screen will save the
  4323.                record.  
  4324.  
  4325.                                                       73
  4326.  
  4327.  
  4328.  
  4329.                (2) Completely filling the last field with text also will
  4330.                save the record.  
  4331.  
  4332.                (3) Pressing CTRL-W will save the new record without
  4333.                displaying the remaining data entry screens if the record
  4334.                requires more than one screen for data entry. 
  4335.  
  4336.                (4) Pressing <PgDn> in the last data entry screen of a
  4337.                record will also SAVE the record.
  4338.             
  4339.                Aborting a new entry can be accomplished by pressing the
  4340.           <ESC>ape key at any time before any of the SAVE methods
  4341.           outlined above occur.  <PgUp> also aborts data entry in ADD
  4342.           mode only. 
  4343.  
  4344.                WAMPUM supports updating of Memo fields in a slightly
  4345.           different way than dBASE III.  If you wish to display or edit
  4346.           a memo field, then first move the cursor to that field.  It will
  4347.           be displayed on the screen with the field name followed by
  4348.           *MEMO*.  Note that memo fields in WAMPUM appear to be
  4349.           logical fields which can accept True, False, Yes, or No as
  4350.           entries.  If you wish to edit the memo field, simply set the
  4351.           logical field to True or Yes by entering a T or Y.  When you
  4352.           complete entry of data for this record and execute a SAVE
  4353.           using one of the methods outlined above, the Memo editor will
  4354.           display any memo field marked True and allow you to update it
  4355.           as desired.  You then can either SAVE the updated Memo text
  4356.           by pressing Ctrl-W or ABORT the update and leave the Memo
  4357.           text as it was by pressing <ESC>ape. 
  4358.  
  4359.                After you ADD a new entry to the file, WAMPUM will
  4360.           display another blank data entry screen thereby allowing you
  4361.           to add another entry.  If you do not wish to add another
  4362.           entry, press <ESC>ape to exit to the Main System Menu. 
  4363.             
  4364.  
  4365.             3.3 E - EDITing Records
  4366.             
  4367.                To edit records in any data base, that file must first be
  4368.           selected and cannot be empty.  Look at the bottom of the
  4369.           WAMPUM Main Menu to make sure that the file you want to
  4370.           use is already selected.  If not, it can be selected using the F
  4371.           - File Select option in developer mode only.
  4372.             
  4373.                If the file you wish to work with is selected, then you
  4374.           should also consider whether there are indexes which you want
  4375.           automatically updated as you EDIT records in the file.  If so,
  4376.           then these, too, must be selected before you EDIT any
  4377.           records.  You can determine which indexes are in use by
  4378.           looking at the bottom of the Main System Menu screen.  New
  4379.  
  4380.  
  4381.                                                       74
  4382.  
  4383.  
  4384.           indexes can be created and/or opened using the I - Index
  4385.           Sel/Create option in developer mode only.
  4386.  
  4387.                Once you are working with the correct file and indexes,
  4388.           then EDITing records is as simple as highlighting the E - Edit
  4389.           Record option and pressing <ENTER>. Or you may simply type
  4390.           an E while the Main System Menu is displayed.
  4391.  
  4392.                If you are not using indexes in conjunction with the file
  4393.           being edited, then you will be prompted for the record number
  4394.           of the record you wish to edit.  Simply type in the number
  4395.           desired and press the <ENTER> key.  
  4396.             
  4397.                If you are using one or more indexes in conjunction with
  4398.           the file being edited, then the first index displayed at the
  4399.           bottom of the Main System Menu is considered the LEAD
  4400.           INDEX and will be used to retrieve records.  If this is not the
  4401.           index you wish to use for record retrieval, see the section on
  4402.           Select Utilities for information on how to change the lead
  4403.           index.  The simplest way in all versions except FoxBASE+ is
  4404.           to press ALT-I and highlight the desired index.
  4405.  
  4406.                When editing with an index, you will be prompted to
  4407.           enter a value for the field which is currently the LEAD
  4408.           INDEX.  With character fields, you may enter all or part of a
  4409.           key, and WAMPUM will search for a match on the portion of
  4410.           the key entered.  With other types of fields, you must enter
  4411.           the exact key to find. Note that capitalization is critical in
  4412.           finding matches.  If a LASTNAME field in your data base
  4413.           contains an entry of SMITH and you enter Smith as the key,
  4414.           then WAMPUM will not find SMITH.
  4415.             
  4416.                Once you have entered either a record number or the key
  4417.           of the record to find, WAMPUM will search for the first
  4418.           match.  Assuming your application allows duplicate keys, there
  4419.           may be more than one match on a particular key, e.g. there
  4420.           may be a number of Smith's in your data base.  If the first
  4421.           data entry screen displayed is not the Smith desired, then
  4422.           <PgDn> until the correct record is retrieved.  
  4423.  
  4424.                If you are using a data base with too many fields to fit
  4425.           on one screen, then you may have to <PgDn> several times just
  4426.           to move to the next record.  There currently is no key which
  4427.           can be pressed to SKIP to the next record without first
  4428.           displaying all of the edit screens for the current record. 
  4429.                If you skip past the record desired, you can also back up
  4430.           through the file in the order of the current key by pressing
  4431.           the <PgUp> key at any time.
  4432.             
  4433.                Once the record is displayed, move to the fields to be
  4434.           edited using the UP and DOWN cursor keys. You can change
  4435.           existing data for a field in several ways:
  4436.  
  4437.                                                       75
  4438.  
  4439.  
  4440.  
  4441.                (1) You may type over the existing data.  
  4442.  
  4443.                (2) Or you may delete the existing data by pressing
  4444.                CTRL-Y and then type in the new data.  
  4445.  
  4446.                (3) Or you may INSERT new data into a field by
  4447.                positioning the cursor where you want the insert to
  4448.                begin. Press the <INS>ert key and type the new text. 
  4449.  
  4450.                With multi-screen records, you can move forward to the
  4451.           next screen by pressing <PgDn>.  You cannot move backward
  4452.           within a record by pressing <PgUp>.  <PgUp> will save the
  4453.           record and move you to the previous record in the data base.
  4454.           The only exception is FoxBASE+ custom format files which are
  4455.           discussed in the Developer's Section of this Guide. 
  4456.  
  4457.                CTRL-W saves the current record and prompts you for the
  4458.           next record to find.  <PgDn> saves the current record and
  4459.           then displays the next record in the file for editing. 
  4460.  
  4461.                You can abort any EDIT by pressing <ESC>ape before any
  4462.           of the SAVE actions outlined above occur.
  4463.             
  4464.             3.4 D - DISPLAYing Records
  4465.             
  4466.                To display records in any data base, that file must first
  4467.           be selected and cannot be empty.  Look at the bottom of the
  4468.           WAMPUM Main Menu to make sure that the file you want to
  4469.           use is already selected.  If not, follow the process outlined
  4470.           under Edit Records to choose a file and any indexes.  
  4471.  
  4472.                Once you are working with the correct file and index,
  4473.           then DISPLAYing records is as simple as highlighting the D -
  4474.           Display Record option and pressing <ENTER>. Or you may
  4475.           simply type a D while the Main System Menu is displayed.
  4476.             
  4477.                If you are not using indexes in conjunction with the file
  4478.           being displayed, then you will be prompted for the record
  4479.           number of the record you wish to display.  Simply type in the
  4480.           number desired and press the <ENTER> key.     
  4481.  
  4482.                If you are using an index in conjunction with the file
  4483.           being displayed, then the first index displayed at the bottom
  4484.           of the Main System Menu is considered the LEAD INDEX and
  4485.           will be used to retrieve records.  If this is not the index you
  4486.           wish to use for record retrieval, see the section on Select
  4487.           Utilities or press ALT-I in non-FoxBASE+ versions. 
  4488.  
  4489.                When retrieving with an index, you will be prompted to
  4490.           enter a value for the field which is currently the LEAD
  4491.           INDEX.  You may enter all or part of a key, and WAMPUM
  4492.  
  4493.                                                       76
  4494.  
  4495.  
  4496.           will search for a match on the portion of the key entered. 
  4497.           Capitalization is critical in finding matches.   
  4498.  
  4499.                Once you have entered either a record number or the key
  4500.           of the record to find, WAMPUM will search for the first
  4501.           match.  Assuming your application allows duplicate keys, there
  4502.           may be more than one match on a particular key, e.g. there
  4503.           may be a number of Smith's in your data base.  If the first
  4504.           data entry screen displayed is not the Smith desired, then
  4505.           <PgDn> until the correct record is retrieved.  
  4506.  
  4507.                If you are using a data base with too many fields to fit
  4508.           on one screen, then each time you press <PgDn>, WAMPUM
  4509.           will skip to the next record.  It will NOT display the
  4510.           subsequent fields of the current record as is the case in EDIT
  4511.           mode.  If you wish to look at the subsequent fields of the
  4512.           current record, then press the <ENTER> key rather than
  4513.           <PgDn>.  In addition, if there are MEMO fields in the data
  4514.           base with which you are working, these fields will show T if
  4515.           there is data in the field except in FoxBASE+ versions which
  4516.           always show F.  Empty memo fields always display F.  To
  4517.           display the first screen of information in any MEMO field, just
  4518.           press <RETURN> rather than <PgDn> on the last screen of the
  4519.           display of the standard fields. The entire contents of a MEMO
  4520.           field can be displayed in non-FoxBASE+ versions by using the
  4521.           cursor control keys.  In FoxBASE+ versions, only the first
  4522.           screen is shown. Use Edit mode to see the rest. 
  4523.  
  4524.                If you skip past the record desired, you can also move
  4525.           backwards through the file in the order of the current key by
  4526.           pressing the <PgUp> key at any time.
  4527.  
  4528.                You can abort any DISPLAY by pressing <ESC>ape key. 
  4529.  
  4530.                If you attempt to find a record which does not exist in
  4531.           the data base, WAMPUM will beep and prompt for another
  4532.           record to find.  When you have displayed all the records
  4533.           desired, press <ESC>ape to exit to the Main System Menu.
  4534.  
  4535.             
  4536.             
  4537.             3.5 M - MARKing a Record for Deletion
  4538.  
  4539.                To mark records as deleted in any data base, that file
  4540.           must first be selected and cannot be empty.  Look at the
  4541.           bottom of the WAMPUM Main Menu to make sure that the file
  4542.           you want to use is already selected.  If not, it can be selected
  4543.           using the F - File Select option in developer mode. 
  4544.                If the file you wish to work with is selected, then you
  4545.           should also consider whether there is an index which you want
  4546.           to use for record retrieval.  If so, then this index must be
  4547.           selected as the lead index before you choose DELETE.   
  4548.  
  4549.                                                       77
  4550.  
  4551.  
  4552.  
  4553.                Once you are working with the correct file and index,
  4554.           then marking records DELETED is as simple as highlighting the
  4555.           M - Mark Record *DEL* option and pressing <ENTER>. Or you
  4556.           may simply type an M from the Main System Menu.
  4557.  
  4558.                If you are not using indexes in conjunction with the file,
  4559.           then you will be prompted for the record number of the
  4560.           record you wish to mark deleted.  Simply type in the number
  4561.           desired and press the <ENTER> key.  
  4562.             
  4563.                If you are using an index in conjunction with the file,
  4564.           then the first index displayed at the bottom of the Main
  4565.           System Menu is considered the LEAD INDEX and will be used
  4566.           to retrieve records.  If this is not the index you wish to use
  4567.           for record retrieval, change the lead index and then proceed.
  4568.  
  4569.                When using an index, you will be prompted to enter a
  4570.           value for the field which is currently the LEAD INDEX.  You
  4571.           may enter all or part of a key, and WAMPUM will search for a
  4572.           match on the portion of the key entered.  
  4573.  
  4574.                Once you have entered either a record number or the key
  4575.           of the record to find, WAMPUM will search for the first
  4576.           match.  Assuming your application allows duplicate keys, there
  4577.           may be more than one match on a particular key, e.g. there
  4578.           may be a number of Smith's in your data base.  If the first
  4579.           entry displayed is not the Smith desired, then <PgDn> through
  4580.           the records until the correct record is displayed.
  4581.  
  4582.                If you are using a data base with too many fields to fit
  4583.           on one screen, note that WAMPUM will only display the first
  4584.           screen of data for each record while in DELETE mode.
  4585.  
  4586.                If you skip past the record desired, you can back up
  4587.           through the file in the order of the current key by pressing
  4588.           the <PgUp> key at any time.
  4589.             
  4590.                Once you find the record you wish to mark DELETED,
  4591.           then answer the DELETE prompt by entering a T for True or Y
  4592.           for Yes, and the record will be marked deleted.
  4593.             
  4594.                You can abort any search by pressing <ESC>ape key. 
  4595.  
  4596.                If you attempt to find a record which does not exist in
  4597.           the data base, WAMPUM will beep and prompt for another
  4598.           record to find.  When you have deleted all the records desired,
  4599.           press <ESC>ape to exit to the Main System Menu.
  4600.             
  4601.                NOTE:  WAMPUM uses the same conventions as dBASE
  4602.           insofar as deleted records are concerned.  Deleted records are
  4603.           not really deleted.  They are simply marked with an asterisk
  4604.  
  4605.                                                       78
  4606.  
  4607.  
  4608.           (*) in the first record position which signifies that they will
  4609.           be deleted the next time the file is rebuilt using the X -
  4610.           REBUILD/FileFix option.  At any time before you rebuild the
  4611.           file, any record marked as deleted can be restored using U -
  4612.           UN*DEL* records.  The primary significance of marking records
  4613.           for deletion is that they will not ordinarily print when output
  4614.           is produced.  
  4615.             
  4616.             
  4617.             3.6 U - UNDELETing a Record
  4618.  
  4619.                To undelete records marked as deleted in any data base,
  4620.           that file must first be selected and cannot be empty.  Look at
  4621.           the bottom of the WAMPUM Main Menu to make sure that the
  4622.           file you want to use is already selected.  If not, it can be
  4623.           selected using F - File Select in developer mode only. 
  4624.  
  4625.                If the file you wish to work with is selected, then you
  4626.           should also consider whether there is an index which you want
  4627.           to use for record retrieval.  If so, then this index must be
  4628.           selected as the lead index before you attempt to UNDELETE
  4629.           any records.  
  4630.             
  4631.                Once you are working with the correct file and index,
  4632.           then marking records UNDELETED is as simple as highlighting
  4633.           the U - UN*DEL* Records option and pressing <ENTER>. Or
  4634.           you may simply type U from the Main Menu. 
  4635.  
  4636.                If you are not using indexes in conjunction with the file,
  4637.           then you will be prompted for the record number of the
  4638.           record you wish to undelete.  Simply type in the number
  4639.           desired and press the <ENTER> key.  
  4640.             
  4641.                If you are using an index in conjunction with the file,
  4642.           then the first index displayed at the bottom of the Main
  4643.           System Menu is considered the LEAD INDEX and will be used
  4644.           to retrieve records.  If this is not the index desired for
  4645.           record retrieval, change the lead index before proceeding.
  4646.  
  4647.                When using an index, you will be prompted to enter a
  4648.           value for the field which is currently the LEAD INDEX.  You
  4649.           may enter all or part of a key, and WAMPUM will search for a
  4650.           match on the portion of the key entered.  
  4651.  
  4652.                If you are using a data base with too many fields to fit
  4653.           on one screen, note that WAMPUM will only display the first
  4654.           screen of data for each record while in UNDELETE mode.
  4655.  
  4656.                If you skip past the record desired, you can also back up
  4657.           through the file in the order of the current key by pressing
  4658.           the <PgUp> key at any time.
  4659.             
  4660.  
  4661.                                                       79
  4662.  
  4663.  
  4664.                Once you find the record you wish to UNDELETE, then
  4665.           answer the restore prompt by entering a T for True or Y for
  4666.           Yes, and the record will be restored to the data base as an
  4667.           active record. 
  4668.  
  4669.                You can abort any search by pressing <ESC>ape key. 
  4670.  
  4671.                If you attempt to find a record which does not exist in
  4672.           the data base, WAMPUM will beep and prompt for another
  4673.           record to find.  When you have undeleted all the records
  4674.           desired, press <ESC>ape to exit to the Main System Menu.
  4675.  
  4676.                NOTE:  WAMPUM can only undelete records which are
  4677.           marked deleted.  It cannot recover records which have been
  4678.           permanently deleted using the X - REBUILD/FileFix option.  At
  4679.           any time before you rebuild the file, any record marked as
  4680.           deleted can be restored using U - UN*DEL* records.  The
  4681.           down side of this is that once the X option has been run on a
  4682.           file, you can no longer UNDELETE records marked for deletion
  4683.           since they have been permanently deleted from the data base.
  4684.  
  4685.             
  4686.             3.7 P - PRINTing Records
  4687.             
  4688.                To print individual records from any data base, that file
  4689.           must first be selected and cannot be empty.  Look at the
  4690.           bottom of the WAMPUM Main Menu to make sure that the file
  4691.           you want to use has already been selected.  If not, it can be
  4692.           selected using the F - File Select option in developer mode
  4693.           only.
  4694.  
  4695.                Also make certain that WAMPUM is configured to match
  4696.           the printer you currently are using.  This can be changed by
  4697.           selecting the # - PRINTER Config option in developer mode
  4698.           only. If no printer has been selected, WAMPUM will print in
  4699.           generic mode, meaning it outputs pure ASCII text.
  4700.             
  4701.                Once the file desired is selected, then you should also
  4702.           consider whether there is an index which you want to use for
  4703.           record retrieval.  If so, then this index must be selected as
  4704.           the lead index before you PRINT any records.
  4705.  
  4706.                Once you are working with the correct file and index,
  4707.           then PRINTing records is as simple as highlighting the P -
  4708.           Print Record(s) option and pressing <ENTER>. Or you may
  4709.           simply type a P while the Main System Menu is displayed.
  4710.             
  4711.                If you are not using indexes in conjunction with the file,
  4712.           then you will be prompted for the record number of the
  4713.           record you wish to retrieve.  Simply type in the number
  4714.           desired and press the <ENTER> key.  
  4715.  
  4716.  
  4717.                                                       80
  4718.  
  4719.  
  4720.                If you are using an index in conjunction with the file,
  4721.           then the first index displayed at the bottom of the Main
  4722.           System Menu is considered the LEAD INDEX and will be used
  4723.           to retrieve records.  If this is not the index you wish to use
  4724.           for record retrieval, then change the lead index and proceed.
  4725.  
  4726.                When printing records with index retrieval, you will be
  4727.           prompted to enter a value for the field which is currently the
  4728.           LEAD INDEX.  You may enter all or part of a key, and
  4729.           WAMPUM will search for a match on the portion of the key
  4730.           entered.  
  4731.             
  4732.                If you are using a data base with too many fields to fit
  4733.           on one screen, then only as many fields as will fit on a single
  4734.           screen will be displayed.  To get a print out of the entire
  4735.           record displayed plus the contents of any MEMO fields,
  4736.           answer the Print Record? prompt by typing a T or Y.  Make
  4737.           certain that your printer is turned ON and is ON LINE.
  4738.             
  4739.                If you skip past the record desired, you can also back up
  4740.           through the file in the order of the current key by pressing
  4741.           the <PgUp> key at any time.
  4742.             
  4743.                You can abort a PRINT records session by pressing the
  4744.           <ESC>ape key.
  4745.             
  4746.                If you attempt to find a record which does not exist in
  4747.           the data base, WAMPUM will beep and prompt for another
  4748.           record to find.  When you have printed all the records desired,
  4749.           press <ESC>ape to exit to the Main System Menu.
  4750.  
  4751.             
  4752.             3.8 X - REBUILD/FileFix
  4753.  
  4754.                Computers are very temperamental when it comes to
  4755.           electricity.  Power fluctuations will cause all sorts of
  4756.           undesired results when working with any data base.  In
  4757.           network environments, power is even more critical.  WAMPUM
  4758.           provides the X - REBUILD/FileFix option as a tool to assist
  4759.           in rebuilding data bases and indexes which typically have been
  4760.           corrupted by power problems.  This option obviously does not
  4761.           take the place of a reliable source of electricity.  If you are
  4762.           having to use this option frequently, then you should seriously
  4763.           consider an uninterruptible power supply if you value your
  4764.           data!  This option now provides three features to assist in file
  4765.           maintenance: 
  4766.  
  4767.                (1) data base file packing which automatically rebuilds
  4768.                active indexes as well, 
  4769.  
  4770.                (2) memo file packing which compresses free-form text
  4771.                entered into memo fields, and 
  4772.  
  4773.                                                       81
  4774.  
  4775.  
  4776.  
  4777.                (3) reindexing which rebuilds index files associated with a
  4778.                data base.
  4779.             
  4780.                The file packing option (1) rebuilds the entire data base
  4781.           file and resets the end-of-file pointer which oftentimes is
  4782.           damaged by a power outage.  If there are active indexes,
  4783.           these are reindexed as well.  Be forewarned that this option
  4784.           automatically and permanently DELETES any records marked for
  4785.           deletion.  Make certain that you have UNDELETED any records
  4786.           you wish to preserve before executing this option! 
  4787.  
  4788.                Memo file packing (2) is NOT included in the dBASE file
  4789.           packing algorithm hence packing a data base file does not
  4790.           affect the memo file at all.  For those new to the world of
  4791.           dBASE, you should be aware that any time a data base is
  4792.           created which includes one or more memo fields, a separate
  4793.           file automatically is created to store the contents of these
  4794.           fields.  It has the same file name as the main data base;
  4795.           however, the file extension is .DBT.  As you add data to memo
  4796.           fields, the actual text is stored in the .DBT file while a
  4797.           pointer (an address) is stored in the actual data base file. 
  4798.                Virtually any time a memo field is revised and expanded
  4799.           even slightly, the entire contents of that memo field is
  4800.           rewritten to the end of the .DBT file, and the pointer is
  4801.           adjusted accordingly.  Over time, the size of the .DBT file
  4802.           grows geometrically depending upon how often your memo
  4803.           fields are revised.  Previous copies of memo fields are never
  4804.           deleted from the .DBT file.  They merely occupy space.  To
  4805.           delete them, you must actually execute a dBASE COPY of the
  4806.           data base and then rename the file back to the original name. 
  4807.           WAMPUM's memo file packing option does this for you
  4808.           automatically.  Before executing this option, always make a
  4809.           backup of your original data base including the .DBT memo
  4810.           file.  Also make certain that your default drive has adequate
  4811.           space to house a temporary duplicate of both the .DBF and
  4812.           .DBT files which will be copied and then renamed!
  4813.             
  4814.                Reindexing (3) is a tool which oftentimes will cure
  4815.           damage from power problems without actually rebuilding the
  4816.           data base itself.  The principal advantage to reindexing rather
  4817.           than file packing is that it does not delete records marked for
  4818.           deletion in the main data base.  If this is a concern, you may
  4819.           wish to try this option to repair damage before choosing file
  4820.           packing.  If you do select file packing, reindexing is performed
  4821.           without selecting this option.
  4822.             
  4823.  
  4824.  
  4825.  
  4826.  
  4827.  
  4828.  
  4829.                                                       82
  4830.  
  4831.  
  4832.             3.9 S - SELECT Utilities
  4833.             
  4834.             3.9.1  Overview
  4835.             
  4836.                The S - Select Utilities option in WAMPUM provides end-
  4837.           user access to the two most critical elements in extracting
  4838.           data from a data base: record selection and sorting.  Sorting
  4839.           in WAMPUM is handled through changing the lead index. 
  4840.  
  4841.                The Select Utilities option also provides the means for
  4842.           setting the primary index for record retrieval purposes.  
  4843.             
  4844.                Four other dBASE III functions are provided through the
  4845.           Select Utilities option: 
  4846.  
  4847.                (1)  LIST FILE CONTENTS, to generate quick report
  4848.                listings with up to 9 fields; 
  4849.  
  4850.                (2)  CHANGE DATA ENTRY MENUS, which allows a user
  4851.                to select from up to 10 different data entry menus; 
  4852.            
  4853.                (3)  BROWSE MODE, to scan through a group of records;
  4854.                and 
  4855.  
  4856.                (4)  LIST STRUCTURE, which displays or prints a listing
  4857.                of a file's field structure.
  4858.             
  4859.                No User's Guide can do justice to the topic of Boolean
  4860.           logic which is the record selection step in both WAMPUM and
  4861.           dBASE III.  There are numerous books including a number of
  4862.           dBASE III primers which cover record selection in much more
  4863.           detail than what is addressed here.  Many are available
  4864.           without charge through your public library.  For anyone to
  4865.           get the most out of WAMPUM, you must master record
  4866.           selection since it is the critical element in identifying which
  4867.           records should and should not be extracted for reports, labels,
  4868.           and form letters.
  4869.  
  4870.  
  4871.             3.9.2  Record Selection Criteria
  4872.             
  4873.                Record Selection, which in dBASE is technically known as
  4874.           a filter, is the process by which you tell the computer which
  4875.           records should and should not be extracted in producing
  4876.           reports, labels, and form letters.
  4877.             
  4878.                With the exception of logical fields, the syntax for
  4879.           record selection typically is FIELDNAME relational operator
  4880.           VALUE.  The syntax for logical fields is simpler.  Assuming a
  4881.           logical field exists in your data base called MARRIED, if you
  4882.           want to find all the records in which the MARRIED field is
  4883.           True, the Boolean expression is simply the field name itself:
  4884.  
  4885.                                                       83
  4886.  
  4887.  
  4888.           MARRIED.  If you want to find all those in which the
  4889.           MARRIED field is False, the correct expression is .NOT.
  4890.           MARRIED.  Any record selection expression can be linked to
  4891.           another expression with one of two connectors: .AND. or .OR.  
  4892.                The other cardinal rule is that expressions on both sides
  4893.           of the relational operator must be of the same type.  Thus, if
  4894.           a field is a character field then the value must be a character
  4895.           string.  If the field is a date field, then the value must be a
  4896.           date.  Finally, except in FoxBASE+ versions, memo fields can
  4897.           be searched for matches using record selection and should be
  4898.           treated as if they were character fields, i.e. enclose search
  4899.           values in quotes just like a character string! 
  4900.  
  4901.                Whenever you run a report, label, or form letter,
  4902.           WAMPUM always checks to see if Record Selection Criteria are
  4903.           in effect.  The bottom line of the Main System Menu also will
  4904.           tell you whether search criteria are active by displaying *SEL*
  4905.           after the file in use.  If so, WAMPUM scans the data base for
  4906.           records whose field entries are TRUE when evaluated against
  4907.           the complete Record Selection Criteria. 
  4908.  
  4909.                WAMPUM currently supports eight relational operators: 
  4910.  
  4911.              OPERATOR         MEANING    
  4912.                =              Equals; matches; begins with.
  4913.                <>             Not equals.
  4914.                >              Greater than; more than.
  4915.                >=             Greater than or equal; at least.
  4916.                <              Less than.
  4917.                <=             Less than or equal; at most.
  4918.                $              Is contained in.
  4919.            .NOT. $            Is not contained in. 
  4920.  
  4921.                The best way to master record selection is by reviewing
  4922.           some examples and finding one that closely matches what you
  4923.           want to do.  For this purpose, let us assume that you are
  4924.           working with a data base with the following file structure: 
  4925.  
  4926.           FIELD NAME  TYPE        LENGTH DEC 
  4927.            LASTNAME    C            20    0
  4928.            ACCTNO      N            5     0
  4929.            ENTRYDT     D            8     0
  4930.            MARRIED     L            1     0
  4931.            COMMENTS    M            10    0
  4932.  
  4933.            Now let us assume that there are three records in the file
  4934.           with the following values:
  4935.  
  4936.  
  4937.  
  4938.  
  4939.  
  4940.  
  4941.                                                       84
  4942.  
  4943.  
  4944.            FIELD NAME  REC #1     REC #2      REC #3 
  4945.  
  4946.            LASTNAME    Mundy      Johns       Johnston
  4947.            ACCTNO      12345      1234        123
  4948.            ENTRYDT     10/01/85   10/31/85    11/01/85
  4949.            MARRIED     .T.        .F.         .F.
  4950.            COMMENTS    Memo       Memo        Memo 
  4951.  
  4952.                What follows are a number of examples showing the
  4953.           correct record selection syntax, what the expression means in
  4954.           plain English, and which records would be selected by the
  4955.           expression. 
  4956.  
  4957.             Criteria: LAST NAME = Johns
  4958.  
  4959.             English:  Find all entries where the last name is Johns.  
  4960.  
  4961.             Selected: No records.
  4962.  
  4963.             Comments: Not only will no records be selected but
  4964.           WAMPUM will display a System Error forcing termination of
  4965.           the   program by typing Q.  FIELD NAMES are words of art
  4966.           which must be spelled exactly as they appear in the data base
  4967.           structure.  While LAST NAME is fine for English, WAMPUM
  4968.           doesn't know LAST NAME from the MOON.  The correct field
  4969.           name is LASTNAME with no spaces!  Since LASTNAME is a
  4970.           character field, the value also must be a character string which
  4971.           means it must be enclosed in quotation marks.  Either error
  4972.           would have triggered a System Error.  Currently, there is no
  4973.           way to check for correct syntax before you actually run a
  4974.           report, label, or form letter.  Then it's too late! 
  4975.  
  4976.  
  4977.             Criteria: LASTNAME="Johns"
  4978.  
  4979.             English:  Find all LASTNAMEs of Johns. 
  4980.  
  4981.             Selected: Records 2 and 3.
  4982.  
  4983.             Comments: Note that EQUALS is not pure equivalency in
  4984.           WAMPUM, but more accurately means "begins with."  If you
  4985.           want exact equivalence, fill out the field with enough spaces to
  4986.           assure that the match will force equivalence, e.g.
  4987.           LASTNAME="Johns  " would select only Record 2. 
  4988.  
  4989.  
  4990.             Criteria: LASTNAME="Johns" .AND. ACCTNO=123 
  4991.             
  4992.             English:  Find all entries where LASTNAME begins with
  4993.           Johns AND the account number is 123.
  4994.  
  4995.             Selected: Record 3.
  4996.  
  4997.                                                       85
  4998.  
  4999.  
  5000.             Comments: For every rule, there is an exception. Equals
  5001.           means exactly equals with numeric fields.  Here the account
  5002.           number is numeric while the LASTNAME field is not. Note that
  5003.           BOTH expressions must be true for a record to qualify since
  5004.           the expressions are joined with .AND. Note also that the
  5005.           character string value must be in quotes to match the
  5006.           character field LASTNAME while the numeric value is NOT in
  5007.           quotes to match the numeric field ACCTNO.
  5008.  
  5009.  
  5010.             Criteria: LASTNAME="Mundy" .AND. LASTNAME="Johns"
  5011.  
  5012.             English:  Find all entries where LASTNAME is Mundy and
  5013.           Johns. 
  5014.  
  5015.             Selected: No records.
  5016.  
  5017.             Comments: Pure English will sometimes get you into trouble. 
  5018.           A common beginner's mistake is to mix up .AND. and .OR. 
  5019.           Remember: .AND. means BOTH expressions must be True.  .OR.
  5020.           means if EITHER is True.  Here, no one has a LASTNAME of
  5021.           Mundy AND Johns.  All entries have a LASTNAME of Mundy
  5022.           OR Johns. 
  5023.  
  5024.  
  5025.  
  5026.             Criteria: MARRIED .OR. LASTNAME="Johns  "
  5027.  
  5028.             English:  Find all entries where person is married or
  5029.           LASTNAME is equal to Johns.
  5030.  
  5031.             Selected: Records 1 and 2.
  5032.  
  5033.             Comments:  When expressions are joined by .OR. then if
  5034.           either expression is true, the record qualifies.  Thus, record 1
  5035.           qualified because the MARRIED field is True and record 2
  5036.           qualified because of the LASTNAME match. 
  5037.  
  5038.  
  5039.             Criteria: .NOT. MARRIED .AND. ENTRYDT >=
  5040.           CTOD("10/31/86")
  5041.  
  5042.             English:  Find all the unmarried people with an entry date
  5043.           of at least October 31, 1986.
  5044.  
  5045.             Selected: Records 2 and 3.
  5046.  
  5047.             Comments: The connecter is .AND. so both expressions must
  5048.           be true. Since the MARRIED field is false in both record 2
  5049.           and 3 and since the ENTRYDT is at least 10/31/86, they both
  5050.           would be output.  Note that the VALUE type must match the
  5051.           field type with the DATE field.  There is no direct way to
  5052.  
  5053.                                                       86
  5054.  
  5055.  
  5056.           enter a date in dBASE.  Thus, you must enter the character
  5057.           string "10/31/86" and then convert it to a DATE with the
  5058.           character-to-date function: CTOD().
  5059.  
  5060.  
  5061.  
  5062.             Criteria:  ENTRYDT >= CTOD("10/01/86") .AND.
  5063.                                 ENTRYDT <= CTOD("10/31/86")
  5064.  
  5065.             English:  Find all of the October, 1986 entries. 
  5066.  
  5067.             Selected: Records 1 and 2.
  5068.  
  5069.             Comments: Here we are using a range of dates to select a
  5070.           month's worth of entries.  Note that spacing between text is
  5071.           optional.  Both expressions must be true for a match.  DATE
  5072.           fields must have DATE values.  CTOD() does it. 
  5073.  
  5074.  
  5075.             Criteria: "This is a test"$COMMENTS
  5076.  
  5077.             English:  Find every record in which the text "This is a
  5078.           test" appears in the COMMENTS memo field. 
  5079.  
  5080.             Selected: Don't know.  See below.
  5081.  
  5082.             Comments: The $ operator is one of Boolean logic's most
  5083.           powerful tools since it automatically searches TEXT STRINGS
  5084.           for a match anywhere in the string.  It can be especially
  5085.           helpful for use with fields in which a word may appear at any
  5086.           place in a lengthy string of text.  For purposes of searches,
  5087.           MEMO fields are treated by WAMPUM as text  strings.  Thus,
  5088.           you can search ANY memo field with the logic outlined above
  5089.           except in FoxBASE+ versions.  To negate the expression, i.e.
  5090.           "This is a test" is NOT contained in the MEMO field, the
  5091.           correct syntax is .NOT."This is a test"$COMMENTS. In this
  5092.           case, we didn't specify the contents of the MEMO field in
  5093.           developing the example.  Thus, there is no way to tell if the
  5094.           text was found or not. 
  5095.  
  5096.  
  5097.                               WAMPUM'S SELECT ASSIST 
  5098.  
  5099.                For those experiencing problems in mastering dBASE
  5100.           Boolean syntax but who have mastered Boolean selection
  5101.           theory, WAMPUM provides a helping hand: SELECT ASSIST. 
  5102.           By entering an asterisk (*) as the first character in the Record
  5103.           Selection field or whenever you pick the LIST FILE CONTENTS
  5104.           option when no selection criteria are in effect, SELECT
  5105.           ASSIST is activated. Or press the ALT-I hot-key.
  5106.  
  5107.  
  5108.  
  5109.                                                       87
  5110.  
  5111.  
  5112.                SELECT ASSIST is a menu-driven record selection tool
  5113.           similar to that found in many data base systems such as dBASE
  5114.           III Plus.  It permits a user to enter up to 10 record selection
  5115.           criteria using a 4-step menu process.  As indicated earlier, it
  5116.           cannot replace the human brain in figuring out which records
  5117.           you want to work with, but it can help you master record
  5118.           selection syntax. 
  5119.  
  5120.  
  5121.                               FIELDNAME SELECTION 
  5122.  
  5123.                Once SELECT ASSIST is started, it will display a screen
  5124.           with the name of the first field in the active data base.  Step
  5125.           1 is to identify the field involved in making your selection of
  5126.           records.  If you don't remember the field names in the data
  5127.           base, simply press the <Dn> and <Up> cursor keys to "thumb
  5128.           through" the field names.  When you find the one you want,
  5129.           press <ENTER>.
  5130.  
  5131.                If you already know the field name and there are a lot
  5132.           of them in your database, you may find it more convenient
  5133.           just to type several of the beginning characters of the field
  5134.           name.  SELECT ASSIST will begin searching for a matching
  5135.           field name as soon as you type a letter between A and Z.  If
  5136.           it finds no match, it will beep and redisplay the first field
  5137.           name in the data base. Since several fields obviously can have
  5138.           the same beginning letters, you may have to type several
  5139.           letters of the field name for SELECT ASSIST to find the field
  5140.           you're looking for.  Once the field name appears that you
  5141.           want, press <ENTER> to continue.
  5142.  
  5143.  
  5144.  
  5145.  
  5146.                          RELATIONAL OPERATOR SELECTION 
  5147.  
  5148.                After selecting a field name, you then must choose a
  5149.           relational operator telling WAMPUM what sort of comparison
  5150.           you wish to make against this field.  The default is EQUALS. 
  5151.           You may "thumb through" the choices by pressing the <Dn> or
  5152.           <Up> cursor keys.  Depending upon the field type of the field
  5153.           name specified, the relational operator selections will vary. 
  5154.           Display the operator desired, then press <ENTER>. 
  5155.  
  5156.  
  5157.                               VALUE SPECIFICATION 
  5158.  
  5159.                Once you have specified the relational operator, you next
  5160.           must tell SELECT ASSIST what VALUE for this field you want
  5161.           to find.  Again, depending upon the field type, your options in
  5162.           specifying a value may be limited.  For example, if the field is
  5163.           a date field, the VALUE must also be a date.  With a logical
  5164.  
  5165.                                                       88
  5166.  
  5167.  
  5168.           field, there is no value specification.  Character fields require
  5169.           the entry of text without surrounding quotation marks.  Press
  5170.           the <ENTER> key once you have specified the value desired. 
  5171.             
  5172.             
  5173.                               CONNECTOR SELECTION 
  5174.  
  5175.                Connector selection allows you to indicate how this
  5176.           selection should be linked to the next selection, if any.  The
  5177.           choices are listed by using the <Dn> and <Up> cursor keys. You
  5178.           may choose AND, OR, or NO CONNECTOR.  If you choose NO
  5179.           CONNECTOR, SELECT ASSIST assumes you are finished. 
  5180.           Specifying either of the other choices by pressing <ENTER>
  5181.           takes you to the next line to enter a second selection criteria
  5182.           beginning with another field name.  
  5183.             
  5184.                Once you have entered all of the selection criteria
  5185.           desired, press the <PgDn> key in the CONNECTOR SELECTION
  5186.           field to tell SELECT ASSIST you are finished.  You may also
  5187.           specify NO CONNECTOR and press <ENTER> which has the
  5188.           same effect.  If you accidentally press <ENTER> to move to the
  5189.           next line with a connector of AND or OR, you may still end
  5190.           processing of SELECT ASSIST by pressing the <PgDn> key in
  5191.           the FIELD NAME position.  In this case, SELECT ASSIST
  5192.           assumes you wanted to use only those selection criteria on the
  5193.           lines above the current line. 
  5194.  
  5195.  
  5196.             3.9.3  Listing File Contents
  5197.             
  5198.                Many times there is a need to produce a so-called "quick
  5199.           and dirty" report which lists certain fields of information on a
  5200.           group of records in the data base.  The List File Contents
  5201.           option in conjunction with a previously specified Record
  5202.           Selection Criteria satisfies this need by simulating the dBASE
  5203.           LIST command.  
  5204.                If the List File Contents option is marked True, WAMPUM
  5205.           first will display the SELECT ASSISTANT previously described
  5206.           if no record selection criteria are in effect.  After specifying
  5207.           record selection criteria, WAMPUM then will display a screen
  5208.           asking the user to identify the fields to be listed.  The user
  5209.           should type a number between 1 and 9 beside each field which
  5210.           should be listed.  No number can be used twice!  If a MEMO
  5211.           field is to be included in the listing, it should be the field
  5212.           with either the highest or lowest number to assure that it
  5213.           prints in either the far right column or the far left column of
  5214.           the listing.  
  5215.             
  5216.                Pressing <PgDn> moves the user to a screen which
  5217.           prompts for (1) whether to print the listing, (2) whether to
  5218.           output all records (i.e., override record selection criteria then
  5219.           in effect), and (3) whether to output records marked for
  5220.  
  5221.                                                       89
  5222.  
  5223.  
  5224.           deletion.  When these prompts are answered, WAMPUM will
  5225.           produce the list with field headings either on the screen or
  5226.           on the printer.  If the total width of the fields specified for
  5227.           the listing exceeds the screen width or current printer width,
  5228.           the listing will be wrapped to the next line.  At the end of the
  5229.           listing a summary of record selection criteria displays.
  5230.  
  5231.             
  5232.             3.9.4  Changing Current Data Entry Menu
  5233.             
  5234.                In addition to its standard data entry menu, WAMPUM
  5235.           provides the capacity for creating up to 9 customized data
  5236.           entry menus to match different data entry stages for any
  5237.           given application.  The number of menus available to the end-
  5238.           user is specified by the developer.
  5239.             
  5240.                You may change data entry menus at any time by
  5241.           following these simple steps.  Access the S - Select Utilities
  5242.           screen from the Main System Menu.  Change the Change
  5243.           Current Menu field to T and press <PgDn>.  A listing of the
  5244.           available menus will be displayed.  Simply type the number
  5245.           corresponding to the menu you want to use.  You then will be
  5246.           returned to the Main System Menu.  Until you change menus
  5247.           again, this new data entry menu will appear whenever you Add,
  5248.           Edit, or Display Records.  Except in FoxBASE+ versions, you
  5249.           also may change menus from the Main Menu by pressing the
  5250.           ALT-M hot key and choosing a new menu.
  5251.  
  5252.             
  5253.             3.9.5  Picking the Lead Index
  5254.             
  5255.                Files can only be accessed and output can only be
  5256.           produced in the order of one index at a time even though
  5257.           WAMPUM automatically updates up to 7 active indexes as you
  5258.           add and modify entries in the file.      
  5259.  
  5260.                The LEAD INDEX is always the FIRST index displayed at
  5261.           the bottom of the WAMPUM Main System Menu.  If you want
  5262.           to retrieve records in some order other than what the current
  5263.           LEAD INDEX would provide, then you can change the LEAD
  5264.           INDEX. Except in FoxBASE+, press the ALT-I hot key.
  5265.  
  5266.                Similarly, all output from WAMPUM including REPORTS,
  5267.           LABELS, and FORM LETTERS is produced in the order of the
  5268.           LEAD INDEX.  If you want the output ordered differently, then
  5269.           you must change the LEAD INDEX before generating the
  5270.           report, labels, or form letters. The only exception is using the
  5271.           W - WAMPUM PreFormat option.  
  5272.  
  5273.                To change the LEAD INDEX in any version, choose the S
  5274.           - Select Utilities option from the Main System Menu by typing
  5275.           an S or highlighting the option and pressing the <ENTER> key. 
  5276.  
  5277.                                                       90
  5278.  
  5279.  
  5280.           Enter any selection criteria desired then press <ENTER> to
  5281.           move to the field which asks Change Lead Index.  Change the
  5282.           value of the field from False to True by typing either a T or
  5283.           Y.  Assuming you have more than one index in use, a list of
  5284.           available indexes then will be displayed.  Just enter the
  5285.           number of the one which you want to designate as the LEAD
  5286.           INDEX.
  5287.             
  5288.             
  5289.             3.9.6  Setting Browse Mode ON
  5290.             
  5291.                WAMPUM implements dBASE III's powerful BROWSE
  5292.           command in a slightly different way.  BROWSE Mode may be
  5293.           turned ON by specifying T or Y to the prompt in the Select
  5294.           Utilities screen.  Except in FoxBASE+ versions, you also may
  5295.           press the ALT-B hot key from the Main Menu.  In all versions, 
  5296.           WAMPUM uses a two-step process for EDITing, DISPLAYing,
  5297.           DELETing, and UNDELETing records.
  5298.             
  5299.                The user first will be prompted for the key field value
  5300.           to find.  Then, instead of the usual data entry display, the
  5301.           user first will be presented with a table of the first twenty
  5302.           records in key order beginning with the first matching key
  5303.           value.  WAMPUM displays as many fields from the data base
  5304.           for each record as will fit on a single line of the screen.
  5305.  
  5306.                  Within this display, the user can move UP and DOWN
  5307.           through the records with the UP and DOWN cursor keys.  The
  5308.           user can request the next twenty records beginning with the
  5309.           last record currently displayed by pressing the <PgDn> key. 
  5310.           Browse also permits the user to move UP a single record by
  5311.           pressing <PgUp>.  If the record is found for which you are
  5312.           searching, then simply highlight that option and press the
  5313.           <ENTER> key.  This then triggers the usual WAMPUM data
  5314.           entry screen.  If no record is found for which you desire to
  5315.           move to the full data entry screen, then two choices are
  5316.           available.  Pressing <ESC> will ABORT the BROWSE session and
  5317.           return you to the Main System Menu.  
  5318.                BROWSE mode is particularly useful in situations in
  5319.           which there may be multiple entries with a similar key value,
  5320.           i.e. a number of entries with LASTNAME of Smith. BROWSE
  5321.           permits you to examine the partial contents of 20 records at a
  5322.           time in order to identify the exact record with which to work. 
  5323.           Note that you cannot actually change any data while in this
  5324.           BROWSE mode.  You must move to the actual data entry
  5325.           screen to do this.  NOTE: FoxBASE+ version users may run the
  5326.           special BROWSER program from the & menu option for full
  5327.           BROWSE functionality by typing DO BROWSER.
  5328.  
  5329.                If a record has been marked for deletion, that entry will
  5330.           show an asterisk (*) as the first character of the line. 
  5331.           Otherwise, the first character position is always blank. 
  5332.  
  5333.                                                       91
  5334.  
  5335.  
  5336.  
  5337.                Once the full data entry mode has been triggered by
  5338.           pressing the <ENTER> key, the user still has the ability to
  5339.           move through the data base with either <PgDn> or <PgUp>.  At
  5340.           this juncture, it is necessary to return to the Main System
  5341.           Menu before the BROWSE mode is reinitiated.
  5342.  
  5343.             
  5344.             3.9.7  Listing the File Structure
  5345.             
  5346.                Particularly in developing reports, labels, form letters, and
  5347.           edit checks, it is helpful to have a listing of the structure of
  5348.           the data base file in use.  The last option on the Select
  5349.           Utilities screen permits a user to request this listing.  If the
  5350.           prompt is answered with Y or T, then WAMPUM will ask
  5351.           whether you want the listing printed as opposed to displayed. 
  5352.           Typing T or Y at the Printed? option will provide a printed
  5353.           listing.  Pressing <ESC> will abort the listing entirely. 
  5354.           Pressing <PgDn> or <ENTER> will display the file structure on
  5355.           the screen.
  5356.  
  5357.  
  5358.             3.10  R - REPORTS Generation
  5359.             
  5360.                The R - Reports option allows you to run existing dBASE
  5361.           III report formats and create new ones.  Creation of new
  5362.           reports is covered in the Developer's Section.
  5363.  
  5364.                Before selecting the Reports option, first pick the S -
  5365.           Select Utilities option to enter Record Selection Criteria and to
  5366.           specify the Lead Index for report output.  
  5367.  
  5368.                When you select the Reports option, a listing of report
  5369.           forms in the default directory will be displayed.  You then are
  5370.           prompted to enter the name of the report form you wish to
  5371.           run.  In FoxBASE+ versions, type in the file name EXACTLY as
  5372.           it appears in the directory listing.  Do NOT include the .FRM
  5373.           file extension.  In other versions, highlight the report form to
  5374.           be executed and press <ENTER>.
  5375.  
  5376.                There also is a field which allows you to specify the
  5377.           PRINTER FONT to be used if the report is to be printed.  If a
  5378.           report is to be printed on regular 8-1/2 x 11 inch paper using
  5379.           10 pitch type, then NO font number needs to be entered.  If
  5380.           your printer supports smaller fonts thereby enabling
  5381.           production of wider reports or reports turned sideways, enter
  5382.           a number corresponding to the font desired.  See the # -
  5383.           Printer Config section of the Developer's Section of this
  5384.           User's Guide for more information.
  5385.             
  5386.                Once you have entered a font or pressed the <ENTER>
  5387.           key, the Printer Selection Screen will appear.  Answer the
  5388.  
  5389.                                                       92
  5390.  
  5391.  
  5392.           prompts.  Or see the Printer Selection Screen section for
  5393.           more information.
  5394.  
  5395.               
  5396.             3.11  L - LABELS Production
  5397.             
  5398.                The L - Labels option allows you to run existing dBASE
  5399.           label formats and create new ones.  Creation of new labels is
  5400.           covered in the Developer's section of this User's Guide. 
  5401.  
  5402.                Before selecting the Labels option, first pick the Select
  5403.           Utilities option to enter Record Selection Criteria and to
  5404.           specify the Lead Index for label output.  
  5405.  
  5406.                When you select the Labels option, a listing of label
  5407.           forms in the default directory will be displayed.  In FoxBASE+
  5408.           versions, you then are prompted to enter the name of the label
  5409.           form you wish to run.  Type in the file name EXACTLY as it
  5410.           appears in the directory listing.  Do NOT include the .LBL file
  5411.           extension.  In other versions, simply highlight the label form to
  5412.           be executed and press <ENTER>.
  5413.  
  5414.                There also is a field which allows you to specify the
  5415.           PRINTER FONT to be used if the labels are to be printed.  If
  5416.           the labels are to be printed using standard 10 pitch type, then
  5417.           NO font number needs to be entered.  If you will be
  5418.           producing labels on a laser printer, then FONT7 should be
  5419.           selected.  See the # - Printer Config section of the
  5420.           Developer's Section for more information.
  5421.             
  5422.                Once you have entered a font or pressed the <ENTER>
  5423.           key, answer the prompts on the Printer Selection Screen. See
  5424.           the Printer Selection Screen section of this User's Guide for
  5425.           more information on these options. 
  5426.  
  5427.             3.12  T - FORM LETTER Generation
  5428.  
  5429.                The T - Form Letters option allows you to run existing
  5430.           WAMPUM form letters and create new ones.  Creation of new
  5431.           form letters is covered in the Developer's Section. 
  5432.             
  5433.                Before selecting the Form Letters option, first choose
  5434.           the Select Utilities option.  Enter Record Selection Criteria
  5435.           and specify the Lead Index for form letter output.  The one
  5436.           exception to this is if you wish to generate a form letter
  5437.           using an indexed key to print a form for a single record.  In
  5438.           this case, make certain that no Record Selection Criteria are
  5439.           in effect.  Then select the T - Form Letters option.  After
  5440.           selecting a form letter file as outlined below, you will be
  5441.           prompted to enter the key value to find using the primary
  5442.           index then in effect.
  5443.             
  5444.  
  5445.                                                       93
  5446.  
  5447.  
  5448.                When you select the Form Letters option, a listing of
  5449.           form letter files in the default directory will be displayed.  In
  5450.           FoxBASE+ versions, a form letter file is a standard .DBF file
  5451.           except that its file name begins with T-.  You then are
  5452.           prompted to enter the name of the form letter form you wish
  5453.           to run.  Type in the file name EXACTLY as it appears in the
  5454.           directory listing.  Do NOT include the .DBF file extension. In
  5455.           other versions, form letters are standard ASCII documents
  5456.           with a file name extension of .TXT.  Highlight the form
  5457.           desired and press <ENTER>.
  5458.  
  5459.                Answer the prompts on the Printer Selection Screen and
  5460.           <PgDn>.  Or see the Printer Selection Screen section of this
  5461.           User's Guide for more information on these options.
  5462.  
  5463.  
  5464.             
  5465.             3.13  W - WAMPUM Preformatted Output
  5466.             
  5467.                The W - WAMPUM Preformatted Output option allows you
  5468.           to run up to 80 predefined Reports, Labels, and Form Letters
  5469.           each with predefined selection criteria, sort order, and even a
  5470.           related file for table lookup if desired.  This is WAMPUM's
  5471.           most unique feature and is NOT available in other dBASE-
  5472.           compatible products.
  5473.  
  5474.                Before this option is available, the WAMPUM master file
  5475.           must be created and appropriate entries must be made for the
  5476.           pre-defined output desired.  This is covered in the Developer's
  5477.           section of this User's Guide.
  5478.             
  5479.                Then all that is necessary to run WAMPUM Preformatted
  5480.           Output is to select the W - WAMPUM PreFormat option from
  5481.           the Main System Menu.  A two-column listing of reports,
  5482.           labels, and form letters available for automatic production then
  5483.           will be displayed.  Following the description of each item will
  5484.           be a single letter (R, L, or T) indicating whether the output is
  5485.           a Report, Label, or Form Letter. In FoxBASE+ versions, there
  5486.           also is an & option signifying that the choice is a FoxBASE-
  5487.           compatible program. Mark the desired output you wish to
  5488.           produce with a T or Y in the logical field provided to indicate
  5489.           which should be run.
  5490.  
  5491.                At the bottom of the screen a range of dates is specified
  5492.           for output which requires these.  The default range of dates is
  5493.           the beginning and ending of the current month unless today's
  5494.           date is less than the 6th of the month.  In this case, the
  5495.           default is the beginning and ending dates of last month.  Most
  5496.           folks produce monthly reports for a prior month at the
  5497.           beginning of the next month so WAMPUM saves you a little
  5498.           typing.
  5499.             
  5500.  
  5501.                                                       94
  5502.  
  5503.  
  5504.                The range of dates can be changed by you to any dates
  5505.           desired although the first date should always be less than or
  5506.           equal to the second date.  The range of dates are automa-
  5507.           tically used for any preformatted reports, labels, or form
  5508.           letters in which the developer wanted the end-user to have
  5509.           the flexibility to select the time period for the report at the
  5510.           time it was produced.  
  5511.             
  5512.                Once you have entered your choices, the Printer
  5513.           Selection Screen appears.  Answer the prompts and <PgDn>. 
  5514.           See the next section for more information on these options. 
  5515.  
  5516.  
  5517.             3.14  Printer Selection Screen
  5518.             
  5519.             3.14.1  Printed Output
  5520.             
  5521.                Whenever you run a Report, Label, Form Letter, or
  5522.           WAMPUM Preformatted Output, you will see the Printer
  5523.           Selection Screen which lets you choose whether to PRINT or
  5524.           DISPLAY the information. If you want the OUTPUT printed,
  5525.           type a T or Y. 
  5526.  
  5527.  
  5528.             3.14.2  Printer Font Selection
  5529.  
  5530.                In some WAMPUM versions, font selection also is made on
  5531.           the Printer Selection Screen.  Choose the font number
  5532.           corresponding to the type style desired for the output you
  5533.           have chosen.  This will be a number between 0 and 9.  With
  5534.           preformatted output, this option does not apply.  
  5535.             
  5536.  
  5537.             3.14.3  Output All Records
  5538.             
  5539.                If record selection criteria are in effect, you also will be
  5540.           asked whether you want to override those criteria and
  5541.           OUTPUT information on ALL records in the data base. 
  5542.  
  5543.                If you DO want to OVERRIDE the record selection
  5544.           criteria in effect, then change the default entry to T or Y. 
  5545.  
  5546.  
  5547.             3.14.4  Output Records Marked for Deletion  
  5548.  
  5549.                You also will be asked whether to output information on
  5550.           records marked for DELETION.  The default is No.  If you
  5551.           want DELETED records included, change the entry to T or Y.
  5552.  
  5553.  
  5554.  
  5555.  
  5556.  
  5557.                                                       95
  5558.  
  5559.  
  5560.             3.15  On-Line HELP
  5561.             
  5562.                The best way to learn WAMPUM is to read this User's
  5563.           Guide cover to cover.  Many won't do that so WAMPUM
  5564.           provides some of what is contained in the User's Guide in
  5565.           HELP screens keyed to where you are in the program.
  5566.             
  5567.                To access the HELP screens, press the F1 function key at
  5568.           any time.  Depending upon where you are in WAMPUM, a
  5569.           screen of HELP will be displayed.  Simply press the <ENTER>
  5570.           key to return to where you were.
  5571.             
  5572.                Every choice from the WAMPUM Main System Menu has
  5573.           an intermediate screen which gives you a chance to change
  5574.           your mind.  In FoxBASE+ versions, it is on this second screen
  5575.           after picking any option that the most detailed HELP is
  5576.           available.  In other versions, simply highlight the choice on
  5577.           the Main Menu and press F1 for HELP.
  5578.  
  5579.  
  5580.  
  5581.             3.16  Credits
  5582.             
  5583.                The following are trademarks or registered trademarks of
  5584.           the respective companies:
  5585.  
  5586.                WAMPUM and MenuMaker   Ward Mundy
  5587.                Clipper   Nantucket Corporation
  5588.                FoxBASE and FoxBASE+   Fox Software, Inc.
  5589.                dBASE, dBASE III, dBASE III Plus   Ashton-Tate
  5590.                dBASE IV    Ashton-Tate
  5591.                LOTUS, 1-2-3, and Symphony  LOTUS Development Co.
  5592.                IBM, IBM PC, and IBM PC-AT  IBM Corporation 
  5593.                HP LaserJet, Plus, and LaserJet II  Hewlett-Packard
  5594.  
  5595.  
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.  
  5607.  
  5608.  
  5609.  
  5610.  
  5611.  
  5612.  
  5613.                                                       96
  5614.